[英]Subtract multiple values from row of numpy 2D-array at the same time, using indices
我有一個二維numpy
數組f
,例如:
f = np.array(
[
[0,0,0],
[0,0,0],
[0,0,0]
]
)
和另一個二維數組q
,例如:
q = np.array(
[
[1,1,1],
[1,1,1],
[2,2,2],
[3,3,3]
]
)
q
中的每一行都應該添加到f
中的某一行,而我只有一個f
中行的索引列表l
, q
中的每一行都應該添加到該列表中。 l
的長度等於q
中的行數。 例如:
l = [0,2,0,0]
這意味着我想做這樣的事情:
f[l] += q
應該將f
轉換為:
[
[6,6,6],
[0,0,0],
[1,1,1]
]
即我期待它這樣做:
f[0] += q[0]
f[2] += q[1]
f[0] += q[2]
f[0] += q[3]
但是當某些索引在l
中重復時(在本例中為索引0
),它只會添加q
中與l
中最后一個重復索引相對應的行。 所以相反,我得到:
[
[3,3,3],
[0,0,0],
[1,1,1]
]
這意味着它正在這樣做:
f[2] += q[1]
f[0] += q[3]
如何將q
中的多行添加到f
中的同一行,僅具有列表l
?
嘗試np.add.at
: np.add.at(f, l, q)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.