Skip to main content
 首页 » 编程设计

python之如何在 Numpy 中迭代一维数组并构建二维数组

2025年05月04日10fff_TT

如果我有一个 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]])