ホームページ > バックエンド開発 > Python チュートリアル > NumPy で「オペランドを一緒にブロードキャストできませんでした」エラーが発生する理由とその修正方法は?

NumPy で「オペランドを一緒にブロードキャストできませんでした」エラーが発生する理由とその修正方法は?

Barbara Streisand
リリース: 2024-12-11 14:12:11
オリジナル
418 人が閲覧しました

Why Do I Get a

Numpy でのブロードキャスト: 「オペランドを一緒にブロードキャストできませんでした」エラーについて理解する

numpy ライブラリは、数値演算のための強力なデータ構造と演算を提供します。計算。一般的な演算の 1 つは行列の乗算で、* 演算子を使用して実行できます。ただし、形状の異なる 2 つの配列を乗算しようとすると、次のエラーが発生する可能性があります:

ValueError: operands could not be broadcast together with shapes (97,2) (2,1)
ログイン後にコピー

このエラーを理解するには、まず numpy でのブロードキャストの概念を詳しく調べる必要があります。ブロードキャストを使用すると、他の配列の次元に一致するように次元を拡張または複製することで、さまざまな形状の配列を操作で使用できます。

提供された例では、配列 X の形状は (97, 2) であり、 97 行 2 列。配列 y は (2, 1) の形状をしており、2 行 1 列であることを示しています。 X * y を実行すると、これらの形状を一緒にブロードキャストできないため、ValueError が発生します。この問題は、最初の次元に競合があるために発生します。X には 97 個の要素があるのに対し、y には 2 個しか要素がありません。ブロードキャストではこの競合を解決できないため、操作は失敗します。

あるいは、ドット積演算子を使用することもできます。 (numpy.dot) 行列の乗算用。ドット積は行列乗算用に特別に設計されており、ブロードキャストを正しく処理します。修正された例では、X.dot(y) は希望どおり (97, 1) の形状を持つベクトルを返します。

ブロードキャストのルールを理解し、正しい行列乗算演算子を使用することで、効果的に次のことができます。数値演算を実行し、numpy での「オペランドを一緒にブロードキャストできませんでした」エラーを回避します。

以上がNumPy で「オペランドを一緒にブロードキャストできませんでした」エラーが発生する理由とその修正方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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