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
有一些重复的元组时,我发现train
不等于train2
tmp
。 numpy 切片有什么问题吗?
彼此。
您知道您正在尝试向“相同位置”写入两次,例如[1, 2]
。 不幸的是(或幸运的是,取决于观点)这不起作用。
但是您可以使用np.add.at
,根据文档“对于加法 ufunc,此方法等效于 a[indices] += b,除了对被多次索引的元素累积结果。”:
train = np.zeros([26,26])
np.add.at(train, [tmp[:-1], tmp[1:]], 1)
谢谢!
最有用的评论
您知道您正在尝试向“相同位置”写入两次,例如
[1, 2]
。 不幸的是(或幸运的是,取决于观点)这不起作用。但是您可以使用
np.add.at
,根据文档“对于加法 ufunc,此方法等效于 a[indices] += b,除了对被多次索引的元素累积结果。”: