大きなNumPyの配列を計算することに興味があります。私は数字の束を含む大きな配列A
を持っています。私はこれらの数の異なる組み合わせの合計を計算したいと思います。データの構造は次のとおりです。大きなNumPyの乗算をベクトル化する
A = np.random.uniform(0,1, (3743, 1388, 3))
Combinations = np.random.randint(0,3, (306,3))
Final_Product = np.array([ np.sum(A*cb, axis=2) for cb in Combinations])
これを計算する方法がよりエレガントでメモリ効率のよい方法があるのですか? 3次元配列が含まれている場合は、np.dot()
を使って作業するのが面倒です。
Final_Product
の形状が理想的には(3743,306,1388)である必要があります。現在Final_Product
は形状(306,3743,1388)のものですので、私はそこに着くために形を変えることができます。
ありがとうございます!私は@ajcrの答えが非常に役立つことも発見しました。テンソルを使用すると、 'np.einsum'で使用された時間が半減しました – Julien
@Julien私はajcrのソリューションも好きです!私はそれがここで 'ドット'のものの簡潔なバージョンだと思う。 – Divakar