查找特定Numpy数组的最后一次具有值

时间:2014-09-05 15:50:26

标签: 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则删除最后一个元素,然后取得结果数组的长度,这似乎可能太慢了很有用。

2 个答案:

答案 0 :(得分:5)

您可以使用nonzero功能 -

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

答案 1 :(得分:4)

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

>>> np.where(a != 0)[0][-1]
15

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

[-1]是用于访问可迭代对象的最后一个元素的熟悉的Python表示法。