Numpy: 高级索引中的一个新的巨大 BUG?

创建于 2017-03-30  ·  3评论  ·  资料来源: numpy/numpy

这是一个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))

输出是-5
tmp有一些重复的元组时,我发现train不等于train2 tmp 。 numpy 切片有什么问题吗?

53 - Invalid

最有用的评论

您知道您正在尝试向“相同位置”写入两次,例如[1, 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] 。 不幸的是(或幸运的是,取决于观点)这不起作用。

但是您可以使用np.add.at ,根据文档“对于加法 ufunc,此方法等效于 a[indices] += b,除了对被多次索引的元素累积结果。”:

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

谢谢!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

marcocaccin picture marcocaccin  ·  4评论

perezpaya picture perezpaya  ·  4评论

dmvianna picture dmvianna  ·  4评论

MareinK picture MareinK  ·  3评论

'
Pezhvuk picture Pezhvuk  ·  4评论