3 回答

TA貢獻1829條經驗 獲得超13個贊
用于np.add.at:
import numpy as np
a = np.zeros((4,4))
x = [1, 2, 1]
y = [0, 1, 0]
z = [2, 3, 1]
np.add.at(a, (x, y), z)
print(a)
# [[0. 0. 0. 0.]
# [3. 0. 0. 0.]
# [0. 3. 0. 0.]
# [0. 0. 0. 0.]]

TA貢獻1811條經驗 獲得超5個贊
您可以創建一個大小為 3x4x4 的多維數組,然后將z所有 3 個不同的維度相加,然后將它們全部相加
import numpy as np
x = [1,2,1]
y = [0,1,0]
z = [2,3,1]
a = np.zeros((3,4,4))
n = range(a.shape[0])
a[n,x,y] += z
print(sum(a))
這將導致
[[0. 0. 0. 0.]
[3. 0. 0. 0.]
[0. 3. 0. 0.]
[0. 0. 0. 0.]]

TA貢獻1847條經驗 獲得超11個贊
當你在做的時候a[x,y]+=z,我們可以將操作分解為:
a[1, 0], a[2, 1], a[1, 0] = [a[1, 0] + 2, a[2, 1] + 3, a[1, 0] + 1]
# Equivalent to :
a[1, 0] = 2
a[2, 1] = 3
a[1, 0] = 1
這就是為什么它不起作用。但是,如果您使用每個維度的循環來增加數組,它應該可以工作
添加回答
舉報