Numpy: BUG luar biasa baru dalam Pengindeksan Lanjutan?

Dibuat pada 30 Mar 2017  ·  3Komentar  ·  Sumber: numpy/numpy

Ini adalah BUG

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))

keluarannya adalah -5
Saya menemukan bahwa train tidak sama dengan train2 ketika ada beberapa tupel duplikat di tmp . Apakah ada yang salah dalam mengiris numpy.

53 - Invalid

Komentar yang paling membantu

Anda tahu bahwa Anda mencoba menulis ke "posisi yang sama" dua kali, misalnya [1, 2] . Sayangnya (atau untungnya, tergantung sudut pandang) itu tidak berhasil.

Tetapi Anda dapat menggunakan np.add.at yang menurut dokumen "Untuk tambahan ufunc, metode ini setara dengan a[indeks] += b, kecuali bahwa hasil diakumulasikan untuk elemen yang diindeks lebih dari sekali.":

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

Semua 3 komentar

Sama denganmu.

Anda tahu bahwa Anda mencoba menulis ke "posisi yang sama" dua kali, misalnya [1, 2] . Sayangnya (atau untungnya, tergantung sudut pandang) itu tidak berhasil.

Tetapi Anda dapat menggunakan np.add.at yang menurut dokumen "Untuk tambahan ufunc, metode ini setara dengan a[indeks] += b, kecuali bahwa hasil diakumulasikan untuk elemen yang diindeks lebih dari sekali.":

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

Terima kasih!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat