At bit OT, but I am new to numpy. The help for np.where says:
Returns
-------
out : ndarray or tuple of ndarrays
If both `x` and `y` are specified, the output array contains
elements of `x` where `condition` is True, and elements from
`y` elsewhere.
If only `condition` is given, return the tuple
``condition.nonzero()``, the indices where `condition` is True.
However, I don't see any case that it returns an ndarray (it always seems
to return a tuple of ndarrys). It seems to me for the case where only
'condition' is given it should return just the ndarry, eg (using this case
discussed above):
In [44]: np.where(i==0)
Out[44]: (array([8, 9]),)
This should just return the ndarray and not the tuple of ndarrays. In what
case does it only return the ndarray?
Thanks,
Bob
On Wed, Apr 17, 2013 at 4:34 AM, Todd <[email protected]> wrote:
> The data type:
>> x in ndarray and x[ i ]--> int64
>> type(f) --> ' list '
>> type( f[ 0 ] ) --> ' tuple '
>> type( f[ 0][0] ) --> 'ndarray'
>> type( f[ 0 ][ 0 ][ 0] ) --> 'int64'
>>
>> How do you think to avoid diversity if data type in this example? I think
>> it is not necessary to get diverse dtype as well as more than 1D array..
>>
>
> That is why I suggested this approach was better ( note the that this is
> where()[0] instead of just where() as it was in my first example):
>
> x,i=numpy.unique(y, return_inverse=True)
> f=[numpy.where(i==ind)[0] for ind in range(len(x))]
>
> type(f) --> list
> type(f[0]) --> ndarray
>
> type(f[0][0]) is meaningless since it is just a single element in an
> array. It must be an int type of some sort of since indices have to be int
> types. x will be the same dtype as your input array.
>
> You could conceivably change the type of f[0] to a list, but why would you
> want to? One of the big advantages of python is that usually it doesn't
> matter what the type is. In this case, a numpy ndarray will work the same
> as a list in most cases where you would want to use these sorts of indices.
> It is possibly to change the ndarray to a list, but unless there is a
> specific reason you need to use lists so then it is better not to.
>
> You cannot change the list to an ndarray because the elements of the list
> are different lengths. ndarray doesn't support that.
>
> _______________________________________________
> NumPy-Discussion mailing list
> [email protected]
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion