【发布时间】:2012-11-06 10:15:28
【问题描述】:
如果我有一个想要矢量化的一维 numpy.ndarray b 和一个 Python function f,这很容易使用 numpy.vectorize 函数:
c = numpy.vectorize(f)(a).
但是如果 f 返回一维 numpy.ndarray 而不是标量,我该如何构建二维 numpy.ndarray 呢? (也就是说,我希望从f 返回的每个一维numpy.ndarray 成为新二维numpy.ndarray 中的一行。)
例子:
def f(x):
return x * x
a = numpy.array([1,2,3])
c = numpy.vectorize(f)(a)
def f_1d(x):
return numpy.array([x, x])
a = numpy.ndarray([1,2,3])
d = ???(f_1d)(a)
在上面的示例中,c 将变为 array([1, 4, 9])。如果d 应该变成array([[1, 1], [2, 2], [3, 3]]),应该用什么替换????
【问题讨论】:
-
您也可以使用 Kronecker 产品来执行此操作,而无需使用用户定义的函数:
d=np.kron(np.ones((1,2),dtype=np.int), a.reshape((-1,1))
标签: python numpy 2d loops multidimensional-array