如何使用numpy accumulator和add函数逐列添加数组以构建基本累加器?
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
实际输出:[1,2,3]
期望的输出:[6,6,6]
numpy词汇表说sum along axis参数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
现在我得到了正确的输出[6,6,6]
答案 0 :(得分:4)
我认为
two_dim.sum(axis=0)
# [6 6 6]
会给你你想要的东西。
我认为accumulate
不是你正在寻找的,因为它提供了一个正在运行的操作,因此,使用add
它会是这样的:
np.add.accumulate(two_dim)
[[1 1 1]
[3 3 3] # = 1+2
[6 6 6]] # = 1+2+3
reduce
更像你所描述的内容:
np.add.reduce(two_dim)
[6 6 6]