numpy.trim_zeros#

numpy.trim_zeros(filt, trim='fb', axis=None)[source]#

Remove values along a dimension which are zero along all other.

Parameters:
filtarray_like

Input array.

trim{“fb”, “f”, “b”}, optional

A string with ‘f’ representing trim from front and ‘b’ to trim from back. By default, zeros are trimmed on both sides. Front and back refer to the edges of a dimension, with “front” refering to the side with the lowest index 0, and “back” refering to the highest index (or index -1).

axisint or sequence, optional

If None, filt is cropped such, that the smallest bounding box is returned that still contains all values which are not zero. If an axis is specified, filt will be sliced in that dimension only on the sides specified by trim. The remaining area will be the smallest that still contains all values wich are not zero.

Returns:
trimmedndarray or sequence

The result of trimming the input. The number of dimensions and the input data type are preserved.

Notes

For all-zero arrays, the first axis is trimmed first.

Examples

>>> import numpy as np
>>> a = np.array((0, 0, 0, 1, 2, 3, 0, 2, 1, 0))
>>> np.trim_zeros(a)
array([1, 2, 3, 0, 2, 1])
>>> np.trim_zeros(a, trim='b')
array([0, 0, 0, ..., 0, 2, 1])

Multiple dimensions are supported.

>>> b = np.array([[0, 0, 2, 3, 0, 0],
...               [0, 1, 0, 3, 0, 0],
...               [0, 0, 0, 0, 0, 0]])
>>> np.trim_zeros(b)
array([[0, 2, 3],
       [1, 0, 3]])
>>> np.trim_zeros(b, axis=-1)
array([[0, 2, 3],
       [1, 0, 3],
       [0, 0, 0]])

The input data type is preserved, list/tuple in means list/tuple out.

>>> np.trim_zeros([0, 1, 2, 0])
[1, 2]