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
أجد أن train
لا يساوي train2
عند وجود بعض المجموعات المكررة في tmp
. هل هناك شيء خاطئ في التقطيع المقطوع.
المشابه لك.
أنت تعلم أنك تحاول الكتابة إلى "نفس المركز" مرتين ، على سبيل المثال [1, 2]
. لسوء الحظ (أو لحسن الحظ ، اعتمادًا على وجهة النظر) هذا لا يعمل.
ولكن يمكنك استخدام np.add.at
والذي وفقًا للمستندات "بالنسبة إلى ufunc ، فإن هذه الطريقة تعادل [الفهارس] + = b ، باستثناء أنه يتم تجميع النتائج للعناصر التي تمت فهرستها أكثر من مرة.":
train = np.zeros([26,26])
np.add.at(train, [tmp[:-1], tmp[1:]], 1)
شكرا!
التعليق الأكثر فائدة
أنت تعلم أنك تحاول الكتابة إلى "نفس المركز" مرتين ، على سبيل المثال
[1, 2]
. لسوء الحظ (أو لحسن الحظ ، اعتمادًا على وجهة النظر) هذا لا يعمل.ولكن يمكنك استخدام
np.add.at
والذي وفقًا للمستندات "بالنسبة إلى ufunc ، فإن هذه الطريقة تعادل [الفهارس] + = b ، باستثناء أنه يتم تجميع النتائج للعناصر التي تمت فهرستها أكثر من مرة.":