# shape mismatch: objects cannot broadcast to single shape – Code Example

In this article we will see Python code to resolve valueerror: shape mismatch: objects cannot be broadcast to a single shape. This error occurs when one of the variables being used in the arithmetic on the line has a shape incompatible with another on the same line (i.e., both different and non-scalar).

When you do arithmetic operations like addition, multiplication over variables of different shape then this error occurs.

## Code Example

Error Code – Let’s first replicate the error –

```import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
y = np.arange(11)
plt.bar(x, y)```

This code will generate valueerror: shape mismatch: objects cannot be broadcast to a single shape. Because (x,y) co-ordinates are always in pairs and if there are more y than x, then how will you plot them? Same issue happens with different libraries and they throw error.

The error could also occur in SciPy Pearson correlation coefficient function `pearsonr(x,y)`. Both x and y needs to have same shape. The below code will throw error –

```from scipy import stats
res = stats.pearsonr([1, 2, 3, 4], [10, 9, 2.5, 6, 4])
print(res)```

Error –

```Traceback (most recent call last):
File "pearsonr.py", line 2, in &lt;module&gt;
res = stats.pearsonr([1, 2, 3, 4], [10, 9, 2.5, 6, 4])
File "/usr/lib/python3.6/site-packages/scipy/stats/stats.py", line 3001, in pearsonr
r_num = np.add.reduce(xm * ym)
ValueError: operands could not be broadcast together with shapes (4,) (5,)```

### Solution

Keep the shape of variables similar.

```import matplotlib.pyplot as plt
import numpy as np

x = np.arange(11)
y = np.arange(11)
plt.bar(x, y)```

Now we set both (x,y) co-ordinates of same shape. So, it will work fine.

```from scipy import stats
res = stats.pearsonr([1, 2, 3, 4, 5], [10, 9, 2.5, 6, 4])
print(res)```

Here we set both arrays of same shape in `pearsonr` method. Output will be –

`(-0.7426106572325057, 0.15055580885344547)`

## Live Demo 