1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】ValueError: shape mismatch: オブジェクトを1つの形状にブロードキャストできない

2022-01-10 04:57:30

質問

SciPyを使用した私のコード pearsonr(x,y) メソッドがありますが、エラーが発生します。

ValueError: shape mismatch: objects cannot be broadcast to a single shape

最初の2つを計算し(このテストをループで数千回実行しています)、そして死ぬのです。 

r_num = n*(np.add.reduce(xm*ym))

これは、エラーが発生したpearsonrメソッドの行です。

解決方法を教えてください。

この特殊なエラーは、その行の演算で使用されている変数の1つが、同じ行の別の変数と互換性のない形状(つまり、両方とも異なる、スカラーでない)であることを意味します。ということは n の出力と np.add.reduce() が両方ともスカラーであることから、この問題は xmym この2つは、単にあなたの xy の入力からそれぞれの平均値を引いたものである。

これを踏まえて推測すると、あなたの xy の入力は互いに形状が異なるため、要素ごとの乗算には不適合です。

** 技術的には、同じ行の変数に互換性のない形状があるわけではありません。問題は、加算や乗算などを行う2つの変数が、一時的な変数(関数の出力など)であろうとなかろうと、互換性のない形状を持つ場合だけです。同じ行にある形状の異なる2つの変数は、数式が評価される前に何か他の方法で問題が修正されれば問題ありません。