2016-04-30 4 views
1

2つのnumpy配列の形をしています。これらの配列の追加が可能かどうかを確認し、結果の形状を決定したいと思います。Numpy:放送後の形を決定する

これをすばやく行い、すべてのエッジケースをカバーする方法はありますか?

+0

をあなたは同じ形状を必要としています。配列を連結することを意味しますか? – roadrunner66

+0

いいえ、同じ形は必要ありません:np.array([1,2])+ np.array([[10,1]、[11、12]] –

+0

@ roadrunner66: NumPyの素晴らしい機能の1つ、[放送](http://docs.scipy.org/doc/numpy-1.10.1/user/basics.broadcasting.html)について聞いたことがあります。 – user2357112

答えて

1

あなたは、実際のnumpyのオブジェクトを持っている場合は、この(追加が放送を要求する、hereを参照)を決定するためにnumpyののロジックを使用することができます。「ほか」の

def checkShapes(a, b): 
    try: 
    return (np.broadcast(a, b)).shape 
    except: 
    return (-1,) 
+0

ありがとう!しかし、より一般的なケースは完全です。実際にメモリを使わずに偽の配列を作成してnp.broadcastを使うことができる方法はありますか? –

+0

最初のスニペットで1次元配列を仮定しているのはなぜですか?なぜ、2番目のスニペットで奇妙な 'len'チェックをしていますか? – user2357112

+0

@ user2357112私の誤りは、1次元を意味する配列を取ったが、ドキュメントを見るとn次元を持つことができる。奇妙な場合は、ドキュメントは「特定の制約の下で、より小さい配列はより大きな配列全体に「ブロードキャスト」され、互換性のあるシェイプを持つようになります」 –

関連する問題