从数组中删除前导/尾随零的索引

时间:2017-10-26 19:18:41

标签: python arrays numpy

给出一维数组

import numpy as np

arr = np.array([0, 0, 0, 0, 0, 0, 8, 83, 120, 111, 31, 37, 10, 0, 0, 0, 0, 0, 0, 0])

我可以使用numpy.trim_zeros

删除前导/尾随零
np.trim_zeros(arr)
array([  8,  83, 120, 111,  31,  37,  10])

但是我还需要删除元素的索引,或者至少需要最极端的索引。在上面的例子中,这些将是

[5, 13]

我可以使用for循环检查每个元素以查看之前处理的元素是0并在此条件为False时停止,但我想知道是否有&#39 ; sa numpy函数已经开发出来,可以实现这一目标。

1 个答案:

答案 0 :(得分:2)

使用argmax() -

In [40]: m = arr!=0

In [41]: m.argmax()-1, m.size - m[::-1].argmax()
Out[41]: (5, 13)

arr作为所有zeros或全部non-zeros,我们需要定义预期输出,如果这些也要处理。