我有一个这样的列表,
import numpy as np
myList = [0.0 , 0.0, 0.0, 2.0, 2.0, 0.0, 2.5, 0.0, 0.0, 0.0, 3.0, 0.0]
我可以找到非零出现的索引,如下所示。
I = np.nonzero(myList)
for i in I:
print(i)
我可以找到零的第一次出现
的索引吗?如下所示,
[0, 5, 7, 11]
最佳答案
由于 NumPy 已标记,这里有两种方法 -
In [44]: m = np.r_[False,np.equal(myList,0)]
In [45]: np.flatnonzero(m[:-1]<m[1:])
Out[45]: array([ 0, 5, 7, 11])
如果输入是数组,则更容易获得等效掩码m
-
a = np.array(myList)
m = np.r_[False,a==0]
使用 np.diff
实现单行的另一种方法 -
In [46]: np.flatnonzero(np.diff(np.r_[0,np.equal(myList,0)])==1)
Out[46]: array([ 0, 5, 7, 11])
使用数组输入再次变得更容易a
-
In [52]: np.flatnonzero(np.diff(np.r_[0,a==0])==1)
Out[52]: array([ 0, 5, 7, 11])
关于python - Python 列表中第一次出现零的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58890548/