给出一维数组
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
函数已经开发出来,可以实现这一目标。
答案 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
,我们需要定义预期输出,如果这些也要处理。