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]]