x.shape[0] vs x[0].shape in NumPy
x
is a 2D array, which can also be looked upon as an array of 1D arrays, having 10 rows and 1024 columns. x[0]
is the first 1D sub-array which has 1024 elements (there are 10 such 1D sub-arrays in x
), and x[0].shape
gives the shape of that sub-array, which happens to be a 1-tuple - (1024, )
.
On the other hand, x.shape
is a 2-tuple which represents the shape of x
, which in this case is (10, 1024)
. x.shape[0]
gives the first element in that tuple, which is 10
.
Here's a demo with some smaller numbers, which should hopefully be easier to understand.
x = np.arange(36).reshape(-1, 9)
x
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8],
[ 9, 10, 11, 12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23, 24, 25, 26],
[27, 28, 29, 30, 31, 32, 33, 34, 35]])
x[0]
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
x[0].shape
(9,)
x.shape
(4, 9)
x.shape[0]
4
x[0].shape
will give the Length of 1st row of an array. x.shape[0]
will give the number of rows in an array. In your case it will give output 10. If you will type x.shape[1]
, it will print out the number of columns i.e 1024. If you would type x.shape[2]
, it will give an error, since we are working on a 2-d array and we are out of index. Let me explain you all the uses of 'shape' with a simple example by taking a 2-d array of zeros of dimension 3x4.
import numpy as np
#This will create a 2-d array of zeroes of dimensions 3x4
x = np.zeros((3,4))
print(x)
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
#This will print the First Row of the 2-d array
x[0]
array([ 0., 0., 0., 0.])
#This will Give the Length of 1st row
x[0].shape
(4,)
#This will Give the Length of 2nd row, verified that length of row is showing same
x[1].shape
(4,)
#This will give the dimension of 2-d Array
x.shape
(3, 4)
# This will give the number of rows is 2-d array
x.shape[0]
3
# This will give the number of columns is 2-d array
x.shape[1]
3
# This will give the number of columns is 2-d array
x.shape[1]
4
# This will give an error as we have a 2-d array and we are asking value for an index
out of range
x.shape[2]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-20-4b202d084bc7> in <module>()
----> 1 x.shape[2]
IndexError: tuple index out of range
x[0].shape
gives you the length of the first row. x.shape[0]
gives you the first component of the dimensions of 'x', 1024 rows by 10 columns.