[Numpy-discussion] Non-Zero Sub-Matrix

Radek Machulka radek.machulka at gmail.com
Fri Sep 10 08:35:46 EDT 2010


Thanks, but...

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

R.

2010/9/10, Pauli Virtanen <pav at iki.fi>:
> 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]])
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>



More information about the NumPy-Discussion mailing list