我有一个代码,试图将其从Matlab转换为Python,但是求和存在问题:
a=np.arange(1,28).reshape(3,3,3)
print a
print np.sum(np.sum(a,axis=1),axis=2)
给我axis index out of bound error
。根据下面的答案,我正在更新此示例。结果为:
a=np.arange(1,28).reshape(3,3,3)
print a
print np.sum(np.sum(a,axis=1),axis=2)
是:
[[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]]
[[10 11 12]
[13 14 15]
[16 17 18]]
[[19 20 21]
[22 23 24]
[25 26 27]]]
[ 45 126 207]
但是Matlab中的相同代码可以正常工作:
a=1:27
b=reshape(a,[3,3,3])
b(:,:,1)=b(:,:,1)';
b(:,:,2)=b(:,:,2)';
b(:,:,3)=b(:,:,3)';
b
sum(sum(b,2),3)
将给出以下输出:有什么问题?
b(:,:,1) =
1 2 3
4 5 6
7 8 9
b(:,:,2) =
10 11 12
13 14 15
16 17 18
b(:,:,3) =
19 20 21
22 23 24
25 26 27
ans =
99
126
153
您的第一个总和是沿着各列求和,我认为您不需要。
>>> np.sum(a,axis=1)
array([12, 15, 18],
[39, 42, 45],
[66, 69, 72]])
而是,更改第一个求和轴。这将产生与您的matlab代码相同的答案:
>>> print np.sum(np.sum(a, axis=0), axis=1)
[99, 126, 153]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句