The broadcast mechanism in NumPy aims to solve the problem of arithmetic operation between arrays of different shapes.

### 1. Operate On Two Same Shape Arrays.

1. If the shapes of the two arrays are exactly the same, we can calculate them directly like below.
```import numpy as np

# create the first array arr_1.
arr_1 = np.array([3, 6, 9, 12, 15, 18])

print('arr_1 = ', arr_1)

print('len(arr_1) = ', len(arr_1))

print('type(arr_1) = ', type(arr_1))

# create the second array arr_2 that has same dimension and size as arr_1.
arr_2 = np.array([3, 3, 3, 3, 3, 3])

print('arr_2 = ', arr_2)

print('len(arr_2) = ', len(arr_2))

print('type(arr_2) = ', type(arr_2))

# calculate arr_1 and arr_2 directly and get arr_3.
arr_3 = arr_1 / arr_2

print('arr_3 = ', arr_3)

print('len(arr_3) = ', len(arr_3))

print('type(arr_3) = ', type(arr_3))

if __name__ == '__main__':

2. When you run the above example, you will get the below output in the console.
```arr_1 =  [ 3  6  9 12 15 18]
len(arr_1) =  6
type(arr_1) =  <class 'numpy.ndarray'>

arr_2 =  [3 3 3 3 3 3]
len(arr_2) =  6
type(arr_2) =  <class 'numpy.ndarray'>

arr_3 =  [1. 2. 3. 4. 5. 6.]
len(arr_3) =  6
type(arr_3) =  <class 'numpy.ndarray'>```

### 2. Operate On Two Different Shape Arrays.

1. For two arrays with different shapes, they can also be calculated。
2. In order to keep the two arrays shape the same, NumPy designed a broadcast mechanism.
3. The core of this mechanism is to repeat the smaller shape array a certain number of times horizontally or vertically to make it has the same dimension and size as the larger shape array.
4. Numpy automatically triggers the broadcast mechanism when the two arrays being calculated have different shapes.
```import numpy as np

# create the first array arr_1.
arr_1 = np.array([3, 6, 9, 12, 15, 18])
# reshape the arr_1 to 2 rows & 3 columns.
arr_1 = arr_1.reshape(2, 3)

print('arr_1 = ', arr_1)

print('len(arr_1) = ', len(arr_1))

print('type(arr_1) = ', type(arr_1))

# create the second array arr_2 that has same dimension and size as arr_1.
arr_2 = np.array([3, 3, 3])

print('arr_2 = ', arr_2)

print('len(arr_2) = ', len(arr_2))

print('type(arr_2) = ', type(arr_2))

# calculate arr_1 and arr_2 directly and get arr_3.
arr_3 = arr_1 / arr_2

print('arr_3 = ', arr_3)

print('len(arr_3) = ', len(arr_3))

print('type(arr_3) = ', type(arr_3))

if __name__ == '__main__':

5. Below is the above example execution output.
```arr_1 =  [[ 3  6  9]
[12 15 18]]
len(arr_1) =  2
type(arr_1) =  <class 'numpy.ndarray'>

arr_2 =  [3 3 3]
len(arr_2) =  3
type(arr_2) =  <class 'numpy.ndarray'>

arr_3 =  [[1. 2. 3.]
[4. 5. 6.]]
len(arr_3) =  2
type(arr_3) =  <class 'numpy.ndarray'>```

This site uses Akismet to reduce spam. Learn how your comment data is processed. 