Difference between single and double bracket Numpy array?

前端 未结 3 1710
予麋鹿
予麋鹿 2021-02-01 08:22

What is the difference between these two numpy objects?

import numpy as np
np.array([[0,0,0,0]])
np.array([0,0,0,0])
相关标签:
3条回答
  • 2021-02-01 09:12
    In [71]: np.array([[0,0,0,0]]).shape
    Out[71]: (1, 4)
    
    In [72]: np.array([0,0,0,0]).shape
    Out[72]: (4,)
    

    The former is a 1 x 4 two-dimensional array, the latter a 4 element one-dimensional array.

    0 讨论(0)
  • 2021-02-01 09:12

    The difference between single and double brackets starts with lists:

    In [91]: ll=[0,1,2]
    In [92]: ll1=[[0,1,2]]
    In [93]: len(ll)
    Out[93]: 3
    In [94]: len(ll1)
    Out[94]: 1
    In [95]: len(ll1[0])
    Out[95]: 3
    

    ll is a list of 3 items. ll1 is a list of 1 item; that item is another list. Remember, a list can contain a variety of different objects, numbers, strings, other lists, etc.

    Your 2 expressions effectively make arrays from two such lists

    In [96]: np.array(ll)
    Out[96]: array([0, 1, 2])
    In [97]: _.shape
    Out[97]: (3,)
    In [98]: np.array(ll1)
    Out[98]: array([[0, 1, 2]])
    In [99]: _.shape
    Out[99]: (1, 3)
    

    Here the list of lists has been turned into a 2d array. In a subtle way numpy blurs the distinction between the list and the nested list, since the difference between the two arrays lies in their shape, not a fundamental structure. array(ll)[None,:] produces the (1,3) version, while array(ll1).ravel() produces a (3,) version.

    In the end result the difference between single and double brackets is a difference in the number of array dimensions, but we shouldn't loose sight of the fact that Python first creates different lists.

    0 讨论(0)
  • 2021-02-01 09:12

    When you defined an array with two brackets, what you were really doing was declaring an array with an array with 4 0's inside. Therefore, if you wanted to access the first zero you would be accessing your_array[0][0] while in the second array you would just be accessing your array[0]. Perhaps a better way to visualize it is

    array: [
    [0,0,0,0],
    ]
    

    vs

    array: [0,0,0,0]
    
    0 讨论(0)
提交回复
热议问题