NumPy の要素ごとの操作におけるブロードキャストの問題
さまざまな形状の NumPy 配列で要素ごとの操作を使用すると、次のような問題が発生する可能性があります。エラー「ValueError: オペランドをシェイプと一緒にブロードキャストできませんでした。」このエラーは、配列の次元が対応する操作に対して互換性がないことを示します。
NumPy 要素ごとの操作でのブロードキャスト
ブロードキャストにより、一方または両方の配列を展開できます要素ごとの操作に互換性を持たせるために、その次元を変更します。値 1 または欠損値の次元をブロードキャストで使用すると、さまざまな形状の配列を要素ごとに乗算できます。
エラー例
次のコードを考えてみましょう。 X は形状 (m,n) の配列、y は形状の配列です。 (n,1):
X * y
次の次元に互換性がないため、このコードは ValueError を発生させます:
(97,2) x (2,1)
行列乗算と要素ごとの乗算
NumPy では、アスタリスク (*) 演算子は要素ごとに使用されます。 dot() 関数は行列の乗算に使用されます。行列の乗算には互換性のある次元が必要ですが、要素ごとの乗算には一緒にブロードキャストできる次元が必要です。
解決
エラーを解決するには、dot() を使用できます。行列の乗算を実行する関数:
X.dot(y)
または、配列の前に配列の形状を変更することもできます。
追加メモ
以上がNumPy の要素ごとの操作で「ValueError: オペランドを一緒にブロードキャストできませんでした」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。