如果我有一个 1D numpy.ndarray b 和一个 Python function f 我想矢量化,使用 numpy.vectorize 函数非常容易:
c = numpy.vectorize(f)(a)。
但如果 f 返回一维 numpy.ndarray 而不是标量,我该如何构建一个二维 numpy.ndarray 呢? (也就是说,我希望从 f 返回的每个 1D numpy.ndarray 成为新的 2D 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]] 应该用什么替换 ???? )
请您参考如下方法:
可以这样做:
def f_1d(x):
return (x,x)
d = numpy.column_stack(numpy.vectorize(f_1d)(a))
将输出:
array([[1, 1],
[2, 2],
[3, 3]])
