[Tutor] If tuple cannot be sorted, then why sorted() on a tuple is fine?

Peter Otten __peter__ at web.de
Thu Aug 10 02:56:44 EDT 2017


C W wrote:

> This is a follow up. I actually ran into this today:
> 
> import numpy as np
> xArray = np.ones((3, 4))
> 
>> xArray.shape
> (3, 4)
>> np.shape(xArray)
> (3, 4)
> 
> It was confusing to see that both xArray.shape and np.shape() worked. Are
> they equivalent?

>>> print(inspect.getsource(numpy.shape))
def shape(a):
    """
    Return the shape of an array.

    Parameters
    ----------
    a : array_like
        Input array.

    Returns
    -------
    shape : tuple of ints
        The elements of the shape tuple give the lengths of the
        corresponding array dimensions.

    See Also
    --------
    alen
    ndarray.shape : Equivalent array method.

    Examples
    --------
    >>> np.shape(np.eye(3))
    (3, 3)
    >>> np.shape([[1, 2]])
    (1, 2)
    >>> np.shape([0])
    (1,)
    >>> np.shape(0)
    ()

    >>> a = np.array([(1, 2), (3, 4)], dtype=[('x', 'i4'), ('y', 'i4')])
    >>> np.shape(a)
    (2,)
    >>> a.shape
    (2,)

    """
    try:
        result = a.shape
    except AttributeError:
        result = asarray(a).shape
    return result

So no; numpy.shape() tries to convert unshapely objects to an array ;)



More information about the Tutor mailing list