我试图对一些列表计算进行矢量化,但是当我试图使用列表作为索引时,发现一些奇怪的地方,特别是当我试图写回原始列表时,重复的列表索引似乎没有用:
import numpy as np
x = np.arange(10)
y = np.array([1,2,3,4,5])
z = np.array([1,1,1,1,1])
print(x[y], x[z])
>;出局:[1 2 3 4 5][1 1 1 1 1],与我预期的一样
x = np.arange(10)
x[y] -= 1
print(x[y])
>;输出:[0 1 2 3 4]这就像索引列表中没有重复一样好
x = np.arange(10)
x[z] -= 1
print(x[y])
>;结果:[0 2 3 4 5],这里我期望[-4 2 3 4 5],这意味着x[1]应该——5次,但结果只减去一次
存在缓冲问题。
ufuncs
给出了.at
方法来解决这个问题:我认为
ufunc.at
的文档很好地解释了这一点https://docs.scipy.org/doc/numpy/reference/generated/numpy.ufunc.at.html
在其他一些问题中,它会周期性地出现。你知道吗
评估如下:
当你期待的时候:
相关问题 更多 >
编程相关推荐