Numpy: Advanced Indexingの新しい途方もないバグ?

作成日 2017年03月30日  ·  3コメント  ·  ソース: numpy/numpy

これはバグです

train = np.zeros([26,26])
train2 = np.zeros([26,26])
tmp = [1,2,3,4,5,6,1,2,3,4,5,6]
train[tmp[0:-1], tmp[1:]] += 1
for i in range(len(tmp)-1):
    train2[tmp[i], tmp[i+1]] += 1
print(np.sum(train - train2))

出力は-5です
tmp重複するタプルがある場合、 traintrain2と等しくないことがわかりました。 ゴツゴツしたスライスに何か問題がありますか?

53 - Invalid

最も参考になるコメント

たとえば、 [1, 2]ように、「同じ位置」に2回書き込もうとしていることがわかります。 残念ながら(または、観点によっては幸いなことに)、それは機能しません。

ただし、 np.add.atを使用することはできます。これは、ドキュメントによると、「追加ufuncの場合、このメソッドはa [indices] + = bと同等ですが、結果が複数回インデックス付けされた要素に対して累積される点が異なります。」:

train = np.zeros([26,26])
np.add.at(train, [tmp[:-1], tmp[1:]], 1)

全てのコメント3件

あなたもね。

たとえば、 [1, 2]ように、「同じ位置」に2回書き込もうとしていることがわかります。 残念ながら(または、観点によっては幸いなことに)、それは機能しません。

ただし、 np.add.atを使用することはできます。これは、ドキュメントによると、「追加ufuncの場合、このメソッドはa [indices] + = bと同等ですが、結果が複数回インデックス付けされた要素に対して累積される点が異なります。」:

train = np.zeros([26,26])
np.add.at(train, [tmp[:-1], tmp[1:]], 1)

ありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価