我正在嘗試更新一組特定的行和列的numpy矩陣。這裏有一個例子:Numpy矩陣的複合索引更新
import numpy as np
A=np.zeros((8,8))
rows=[0, 1, 5]
columns=[2, 3]
#(What I am trying to achieve) The following does not update A
A[rows][:,columns]+=1
#while this just does
for i in rows:
A[i][columns]+=1
我期待的輸出爲:
In [1]:print(A)
Out[1]:
array([[ 0., 0., 1., 1., 0., 0., 0., 0.],
[ 0., 0., 1., 1., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 1., 1., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0.]])
是否有不執行的循環多縱列和-rowwise更新在同一時間的方法嗎?
我同意你的結果肯定比我更ele elegent ...但是,我想指出一個_can_使用高級索引更改'A'的元素請參閱[這裏](http://stackoverflow.com/a/15692289/4367286) – plonser
@plonser這是真的,但只有當分配給單個索引表達式的結果時。如果第一組索引是一個切片或一個整數(即非花式索引),那麼賦值給鏈接索引的結果(例如'A [x] [y] = ...)。我會編輯我的答案,使區分更清晰。 –