[Numpy-discussion] Why does argwhere return column vector?

mark markbak at gmail.com
Tue May 27 04:44:34 EDT 2008


OK, I get how it works for 2D arrays.

What I want to do is insert a number, say 7, before every value in the
array that is larger than, for example, 1.

Then I need to first find all the indices of values larger than 1, and
then I can do an insert:

>>> a = arange(5)
>>> i = argwhere( a>1 )
>>> insert(a,i[:,0],7)
array([0, 1, 7, 2, 7, 3, 7, 4])

Is there a better way to do this?
So for this instance, it is inconvenient that argwhere returns a
column vector. But I understand the issue for arrays with higher
dimensions.

Thanks for the explanation,

Mark

> Each row of the result is a coordinate into your array.  So if you had
>
> a = np.arange(12).reshape((4,3))
>
> then you'd get
>
> In [54]: np.argwhere(a>5)
> Out[54]:
> array([[2, 0],
>        [2, 1],
>        [2, 2],
>        [3, 0],
>        [3, 1],
>        [3, 2]])
>
> If you want to grab the elements larger than 5, just do
>
> a[a>5]



More information about the NumPy-Discussion mailing list