简体   繁体   English

修剪/去除 numpy 数组的零点

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM