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

3

给定一个一维数组

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,并在这个条件不成立时停止。但是我想知道是否已经开发了一个numpy函数可以实现这一点。

1个回答

7
使用argmax() -
In [40]: m = arr!=0

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

使用全为零或全为非零的arr,我们需要定义预期输出,如果这些也需要处理。

1
这是数组的巧妙使用。谢谢Divakar! - Gabriel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接