[英]Trim / strip zeros of a numpy array
How to remove leading / trailing zeros of a numpy array?如何删除numpy数组的前导/尾随零?
import numpy as np
a = np.array([0,0,0,3,2,-1,0,0,7,9,13,0,0,0,0,0,0,0])
#Desired output
[3,2,-1,0,0,7,9,13]
This doesn't work:这不起作用:
a[a != 0]
because it would remove all zeros including the zeros which are inside .因为它会删除所有零,包括里面的零。
Use numpy.trim_zeros
:使用
numpy.trim_zeros
:
>>> import numpy as np
>>> a = np.array([0,0,0,3,2,-1,0,0,7,9,13,0,0,0,0,0,0,0])
>>> np.trim_zeros(a)
array([ 3, 2, -1, 0, 0, 7, 9, 13])
To trim 2d arrays:修剪二维数组:
def trim_zeros_2D(array, axis=1):
mask = ~(array==0).all(axis=axis)
inv_mask = mask[::-1]
start_idx = np.argmax(mask == True)
end_idx = len(inv_mask) - np.argmax(inv_mask == True)
if axis:
return array[start_idx:end_idx,:]
else:
return array[:, start_idx:end_idx]
To trim 2d arrays without an extra function:要在没有额外功能的情况下修剪二维数组:
np.array([np.trim_zeros(arr) for arr in array2d])
Simple list comprehension wrapped by array should work fine.由数组包装的简单列表理解应该可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.