ホームページ > バックエンド開発 > Python チュートリアル > NumPy の要素ごとの操作で「ValueError: オペランドを一緒にブロードキャストできませんでした」エラーが発生するのはなぜですか?

NumPy の要素ごとの操作で「ValueError: オペランドを一緒にブロードキャストできませんでした」エラーが発生するのはなぜですか?

Susan Sarandon
リリース: 2024-12-08 20:29:15
オリジナル
544 人が閲覧しました

Why Do I Get a

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.matrix 型の場合、アスタリスク演算子を次のように使用できます。行列の乗算。
  • 互換性のない形状の配列で dot() を使用すると、「ValueError:」が発生します。行列が整列していません。"
  • ブロードキャスト ルールの包括的な説明については、NumPy のドキュメントを参照してください。

以上がNumPy の要素ごとの操作で「ValueError: オペランドを一緒にブロードキャストできませんでした」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート