2024-04-20 13:18:55 发布
网友
我有一个带前导零的数组,我想要第一个非零元素的数组。 例如,我有一个数组
x=[0,0,0,0,0,3,2,0,0,4,5]
我想获得:
x=[3,2,0,0,4,5]
使用non-zeros上的^{}获取起始非零索引,然后简单地将其切片-
non-zeros
x[(x!=0).argmax():]
样本运行-
In [71]: x Out[71]: array([0, 0, 0, 0, 0, 3, 2, 0, 0, 4, 5]) In [72]: x[(x!=0).argmax():] Out[72]: array([3, 2, 0, 0, 4, 5])
你所拥有的是一个列表,而不是一个数组。这是一个纯Python的解决方案,不过您可以考虑将列表转换为NumPy数组,并使用Divakar的解决方案以获得更好的性能(如果并且仅当您计划使用NumPy进行下游处理时)
In [1]: from itertools import dropwhile In [2]: from operator import not_ In [3]: x = [0,0,0,0,0,3,2,0,0,4,5] In [4]: list(dropwhile(not_, x)) Out[4]: [3, 2, 0, 0, 4, 5]
使用} 获取起始非零索引,然后简单地将其切片-
non-zeros
上的^{样本运行-
你所拥有的是一个列表,而不是一个数组。这是一个纯Python的解决方案,不过您可以考虑将列表转换为NumPy数组,并使用Divakar的解决方案以获得更好的性能(如果并且仅当您计划使用NumPy进行下游处理时)
相关问题 更多 >
编程相关推荐