如何按列累积numpy数组中的值?

xti*_*ian 5 python numpy

如何使用 numpy累加器添加函数以按列添加数组以制作基本累加器?

   import numpy as np
   a = np.array([1,1,1])
   b = np.array([2,2,2])
   c = np.array([3,3,3])
   two_dim = np.array([a,b,c])
   y = np.array([0,0,0])
   for x in two_dim:
     y = np.add.accumulate(x,axis=0,out=y)                               
     return y
Run Code Online (Sandbox Code Playgroud)

实际输出:[1,2,3] 期望输出:[6,6,6]

numpy 词汇表表示沿轴参数的axis=1总和对行求和:“我们可以对数组的每一行求和,在这种情况下,我们沿列或轴 1 进行运算”。

“二维数组有两个对应的轴:第一个垂直向下跨行(轴 0),第二个水平跨列(轴 1)”

随着axis=1我期望输出[3,6,9],但这也会返回[1,2,3]

当然!x 和 y 都不是二维的。

我究竟做错了什么?

我可以手动使用 np.add()

aa = np.array([1,1,1])
bb = np.array([2,2,2])
cc = np.array([3,3,3])
yy = np.array([0,0,0])
l = np.add(aa,yy)
m = np.add(bb,l)
n = np.add(cc,m)
print n
Run Code Online (Sandbox Code Playgroud)

现在我得到了正确的输出, [6,6,6]

tom*_*m10 5

我认为

two_dim.sum(axis=0)
# [6 6 6]
Run Code Online (Sandbox Code Playgroud)

会给你你想要的。

我认为这不是accumulate您要寻找的,因为它提供了一个正在运行的操作,因此,使用add它看起来像:

np.add.accumulate(two_dim)

[[1 1 1]
 [3 3 3]    # = 1+2
 [6 6 6]]   # = 1+2+3
Run Code Online (Sandbox Code Playgroud)

reduce 更像是你所描述的:

np.add.reduce(two_dim)

[6 6 6]
Run Code Online (Sandbox Code Playgroud)