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可以完成此操作的函数。
使用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,如果要处理这些输出,我们需要定义预期输出。