Skip to content Skip to sidebar Skip to footer

Difference Between Single And Double Bracket Numpy Array?

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])

Solution 1:

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.

Solution 2:

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]: _.shapeOut[97]: (3,)
In[98]: np.array(ll1)
Out[98]: array([[0, 1, 2]])
In[99]: _.shapeOut[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.

Solution 3:

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]

Post a Comment for "Difference Between Single And Double Bracket Numpy Array?"