1. 问题
编写程序使用np.nonzero(ex)获取一维列表中的非零元素的下标时,
显示了Cannot find reference ‘nonzero’ in ‘init.pyi | init.pyi’
之所以会报错,是因为自1.17.0版本以后不在支持nonzero()函数。不过需要说明的是虽然报错了但仍可以使用,强迫症选手看不下去,只好找个其他函数代替。
停止支持信息详见:https://numpy.org/doc/stable/reference/generated/numpy.nonzero.html
2. 解决办法:
报错的解决办法是用np.flatnonzero()函数,可以达到同样的效果。
import numpy as np
ex = np.zeros(5, dtype=float)
ex[3] = 1
ex[1] = 3
print(ex)
print(np.nonzero(ex)[0])
ex[np.nonzero(ex)[0]] -= 1.00000001
print(ex)
ex1 = np.zeros(5, dtype=float)
ex1[3] = 1
ex1[1] = 3
print(ex1)
print(np.flatnonzero(ex))
ex1[np.flatnonzero(ex1)] -= 1.00000001
print(ex1)
运行效果是完全一样的