繁体   English   中英

沿 i 个元素求和 3d numpy 数组 [i,j]

[英]Sum 3d numpy array [i,j] along i elements

对于形状为 ([N,N,3]) 的 numpy 数组,

[[1,2,3], [1,2,3],[1,2,3]],
[[4,5,6],[4,5,6],[4,5,6]],
[[7,8,9],[7,8,9],[7,8,9]]

我怎样才能得到一个 [N,3] 与 j 元素总结看起来像这样?

[2,4,6], [8,10,12], [14,16,18]

我正在考虑重塑它,尽管我认为没有必要。 我知道我想垂直添加,所以总和轴 = 0。 我只是发现很难保持结构不变。

您将乘以 2,但对于总和,这是一个解决方案:

# Convert to list
>>> lst = a.tolist()

# Sum by index
>>> sum_by_index = lambda x: [x[0][i] + x[1][i] + x[2][i] for i in range(3)]

# For multiplication
>>> mply_by_index = lambda x: [x[0][i] * 2 for i in range(3)]

# Apply
>>> list(map(sum_by_index, lst))
[[3.0, 6.0, 9.0], ...]

>>> list(map(mply_by_index, lst))
[[2.0, 4.0, 6.0], ...]

我怎样才能得到一个 [N,3] 与 j 元素总结看起来像这样?

这是你想要的?

j = 2

a[:,:j,:].sum(1)
array([[ 2,  4,  6],
       [ 8, 10, 12],
       [14, 16, 18]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM