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

Gab*_*iel 3 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])
Run Code Online (Sandbox Code Playgroud)

我可以使用删除前导/尾随零numpy.trim_zeros

np.trim_zeros(arr)
array([  8,  83, 120, 111,  31,  37,  10])
Run Code Online (Sandbox Code Playgroud)

但我还需要已删除元素的索引,或者至少是最极端元素的索引。在上述情况下,这些将是

[5, 13]
Run Code Online (Sandbox Code Playgroud)

我可以通过for循环检查每个元素来查看之前处理的元素是否是0并在该条件为 False 时停止,但我想知道是否已经开发了一个numpy可以完成此操作的函数。

Div*_*kar 7

使用argmax()-

In [40]: m = arr!=0

In [41]: m.argmax()-1, m.size - m[::-1].argmax()
Out[41]: (5, 13)
Run Code Online (Sandbox Code Playgroud)

对于arras allzeros或 all non-zeros,如果要处理这些输出,我们需要定义预期输出。