Python 查找特定Numpy数组上次具有值的时间

Python 查找特定Numpy数组上次具有值的时间,python,arrays,numpy,Python,Arrays,Numpy,我有一些数据,用Numpy数组表示,它有一个序列,看起来有点像这样: np.array([1, 0, 2, 5, 10, 6, 2, 0, 4, 1, 0, 1, 2, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0]) 我想知道这个数组的最后一个非零值在什么位置,所以在这个例子中,2出现在位置15 最快最简单的方法是什么?我可能会生成大量的数组,因此我的初始计划是迭代数组,如果最后一个元素=0,则删除最后一个元素,然后获取结果数组的长度,这可能太慢,不太有用。使用a作为数组,可以使

我有一些数据,用Numpy数组表示,它有一个序列,看起来有点像这样:

np.array([1, 0, 2, 5, 10, 6, 2, 0, 4, 1, 0, 1, 2, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0])
我想知道这个数组的最后一个非零值在什么位置,所以在这个例子中,2出现在位置15

最快最简单的方法是什么?我可能会生成大量的数组,因此我的初始计划是迭代数组,如果最后一个元素=0,则删除最后一个元素,然后获取结果数组的长度,这可能太慢,不太有用。

使用a作为数组,可以使用np.where指定要查找的条件:

>>> np.where(a != 0)[0][-1]
15
此函数返回数组的索引,在本例中,给定条件保留所有非0元素的索引。实际上np.WHERE!=0返回一个包含数组的元组,因此我们使用[0]访问它

[-1]是访问iterable对象最后一个元素的常见Python符号。

您可以使用非零函数-

>>> arr1.nonzero()[0][-1]
15