HOWTO · Python

Python で Operands Could Not Be Broadcast Together With Shapes エラーを修正する方法

Python で Operands Could Not Be Broadcast Together With Shapes エラーを修正する方法

Python では、形状の異なる numpy 配列を一緒にブロードキャストすることはできません。これは、行と列が異なる 2つの 2D 配列を追加できないことを意味します。

しかし、それを行う方法があります。見てください。

Python の operands could not be broadcast together with shapes エラーの修正

形状の異なる 2つの 2D 配列を追加または乗算することはできません。次のコードを見てください。

import numpy as np

# Addition Example

# 2d array with shape 2 rows and 3 columns
array_1 = np.array([[1, 1, 1], [1, 1, 1]])
# 2d array with shape 3 rows and 2 columns
array_2 = np.array([[1, 1], [1, 1], [1, 1]])
# Addition applying on the arrays
array_Addition = array_1 + array_2

ご覧のとおり、形状の異なる 2つの 2D 配列があります。

最初の配列は 2 行 3 列で、2 番目の配列は 3 行 2 列です。それらを追加すると、このエラーが発生します operands could not be broadcast together with shapes

これは、数学で 2つの行列を追加するのと同じように機能します。

最初の配列の最初の要素は 2 番目の配列の最初の要素と一緒に追加され、2 番目の要素は 2 番目の要素と一緒に追加されます。そのため、形状が一致していない場合、エラーが発生します。

したがって、2つの 2D 配列で同じ形状になるように、再形成機能を使用する必要があります。次のコードでは、最初の配列の形状に従って 2 番目の配列を再形成しています。

形状が同じになったら、2つの配列を追加できます。

import numpy as np

# Addition Example

# 2d array with shape 2 rows and 3 columns
array_1 = np.array([[1, 1, 1], [1, 1, 1]])
# 2d array with shape 3 rows and 2 columns
array_2 = np.array([[1, 1], [1, 1], [1, 1]])

# changing the shape of array_2 according to the Array_1 or Array_1 according to Array_2
array_2 = array_2.reshape((2, 3))

# again Addition applying on the arrays
array_Addition = array_1 + array_2

print(array_Addition)

出力:

[[2 2 2]
 [2 2 2]]