我有一个 2D
numpy
数组 L
,我想将其转换为另一个 numpy
数组相同的形状,使得每一行都被所有其他行的总和替换。我在下面演示了这一点。
我的问题是是否有一种更简洁/优雅的方法来执行此操作(最好使用更高级的 numpy 语法/工具)。
L = np.array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
store = []
for i in range(L.shape[0]):
store.append(np.sum(L,axis=0) - L[i])
output = np.stack(store)
这给了我正确的输出:
array([[18, 21, 24],
[15, 18, 21],
[12, 15, 18],
[ 9, 12, 15]])
最佳答案
只需从列求和中减去 L
即可利用 broadcasting
也在寻求矢量化解决方案 -
In [12]: L.sum(0) - L
Out[12]:
array([[18, 21, 24],
[15, 18, 21],
[12, 15, 18],
[ 9, 12, 15]])
关于python - 对 numpy 数组的选定行求和的简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55781501/