[Numpy-discussion] Non-Zero Sub-Matrix

Pauli Virtanen pav@iki...
Fri Sep 10 05:18:18 CDT 2010

Fri, 10 Sep 2010 11:46:47 +0200, Radek Machulka wrote:
> I have array (numpy.ndarray object) with non-zero elements cumulated
> 'somewhere' (like a array([[0,0,0,0],[0,1,1,0],[0,0,1,0],[0,0,0,0]]))
> and I need sub-array with just non-zero elements (array([[1,1],[0,1]])).
> I can do this with iterating throught an array, but I also found some
> magic tricks with boolen operators in indexing and nonzero function, but
> it is still not clear to me, how to use it.

>>> x = np.array([[0,0,0,0],[0,1,1,0],[0,0,1,0],[0,0,0,0]])
>>> i, j = x.any(0).nonzero()[0], x.any(1).nonzero()[0]
>>> x[i[:,None], j[None,:]]
array([[1, 1],
       [0, 1]])

More information about the NumPy-Discussion mailing list