x.shape[0] vs x[0].shape in NumPy

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 ?

0

4 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.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like