Let say, I have an array with
x.shape = (10,1024)
when I try to print x[0].shape
x[0].shape it prints 1024
and when I print x.shape[0]
x.shape[0] it prints 10
I know it's a silly question, and maybe there is another question like this, but can someone explain it to me ?
04 Answers
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.
x.shape[0] will give the number of rows in an array.
x[0] is 1st row of x so x[0].shape will provide the length of 1st row.