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.
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!
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.":