我有一些数据,表示为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则删除最后一个元素,然后取得结果数组的长度,这似乎可能太慢了很有用。
答案 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表示法。