Labs ICT
Pro Login

Array Attributes

Shape, size, dtype — understanding your arrays.

Array Attributes

Every NumPy array comes with useful metadata. Think of it like checking the specs of a car before buying it. These attributes tell you everything about your array.

Shape - The Dimensions

Shape tells you the size of each dimension. It's a tuple that's super important for understanding your data.


import numpy as np

arr_1d = np.array([1, 2, 3, 4, 5])
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])

print(f"1D Shape: {arr_1d.shape}")
print(f"2D Shape: {arr_2d.shape}")
    

For 1D, shape is (5,) - note the comma. For 2D, it's (2, 3) meaning 2 rows, 3 columns.

Size & Ndim

Size gives total elements, ndim gives number of dimensions.


import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(f"Size: {arr.size}")
print(f"Dimensions: {arr.ndim}")
    

Here is the thing - size is just the product of all shape values. 2 * 3 = 6.

Dtype - Data Type

Every array has a dtype that tells you what type of data it holds.


import numpy as np

int_arr = np.array([1, 2, 3])
float_arr = np.array([1.0, 2.0, 3.0])

print(f"Int dtype: {int_arr.dtype}")
print(f"Float dtype: {float_arr.dtype}")
    

Common dtypes: int32, int64, float32, float64, bool, string_

Itemsize - Memory per Element

Itemsize tells you how many bytes each element uses.


import numpy as np

int_arr = np.array([1, 2, 3])
float_arr = np.array([1.0, 2.0, 3.0])

print(f"Int itemsize: {int_arr.itemsize} bytes")
print(f"Float itemsize: {float_arr.itemsize} bytes")
    

One thing that confused me at first was why itemsize matters. It affects memory usage and performance. Larger dtypes use more memory.

Try it Yourself →

Key Takeaways

  • shape shows dimensions as a tuple
  • size gives total number of elements
  • ndim shows number of dimensions
  • dtype shows data type, itemsize shows bytes per element