私は2D配列内の複数の要素の値を設定していますが、私のデータには特定のインデックスの複数の値が含まれることがあります。NumPyの割り当てにおける重複インデックスの扱い
"後"の値は常に割り当てられますが(下の例を参照)、この動作は保証されているか、矛盾した結果が得られる可能性がありますか?ベクタライズされた課題で「後で」解釈できることをどのようにして知ることができますか?
つまり、私の最初の例ではa
には常に4
が含まれ、2番目の例ではvalues[0]
が印刷されますか?
非常に簡単な例:
numpyの1.9ではimport numpy as np
indices = np.zeros(5,dtype=np.int)
a[indices] = np.arange(5)
a # array([4])
別の例
import numpy as np
grid = np.zeros((1000, 800))
# generate indices and values
xs = np.random.randint(0, grid.shape[0], 100)
ys = np.random.randint(0, grid.shape[1], 100)
values = np.random.rand(100)
# make sure we have a duplicate index
print values[0], values[5]
xs[0] = xs[5]
ys[0] = ys[5]
grid[xs, ys] = values
print "output value is", grid[xs[0], ys[0]]
# always prints value of values[5]
Numpyアレイの動作で何が起こっているのか理解するには、私はhttp://scipy-lectures.github.io/advanced/advanced_numpy/をお勧めします。 – tom10
素敵な質問...これはおそらく待つ必要があるものの1つです@sebergは意味のある答えを得るために周りにいる。 – Jaime
私は何かが保証されているのではないかと疑いますが、外見的にストライドされた配列を使ったいくつかの実験では、インデックス配列上の単純な左から右へのループを指しています。 –