2017-07-12 13 views
1

最近、pythonは2つの配列が異なる次元を持っていても、一方の配列に他方の次元が含まれている限り自動的に追加することができました。たとえば、異なる形状の配列の追加を禁止する

import numpy as np 
a=np.array([[1,2],[3,4]]) 
b=np.array([[[1,2],[3,4]],[[5,6],[7,8]]]) 
print a.shape 
print b.shape 
b=b+a 
print b 

この動作では、形状がまったく同じでない場合、Pythonがエラーを返すと予想していたため、いくつかの問題が発生する可能性があります。

シェイプがまったく同じでないと操作が失敗するようにこの動作を切り替える方法はありますか?

+0

あなたのコードは3行目に 'SyntaxError'を与えます。 – jsalonen

+2

あなたが参照している言葉は、'ブロードキャスト '(https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html) 「numpy」。あなたの質問に関しては、[こちらをご覧ください](https://stackoverflow.com/questions/20789889/how-to-prevent-adding-two-arrays-by-broadcasting-in-numpy) – CoryKramer

答えて

2

いいえ、簡単にその動作を無効にする方法はありません。 broadcastingと呼ばれています(「配列の一方にもう一方の次元が含まれていれば!」)、NumPyに組み込まれているのは簡単ではありません。

ただし、操作を行う前に配列の形状を比較したり、numpy.ndarrayのカスタムサブクラスを使用したりすることができます。

関連する問題