問題タブ [numpy-einsum]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - なぜ numpy.einsum は float16 や uint16 よりも float32 の方が速く動作するのですか?
numpy 1.12.0 を使用した私のベンチマークでは、内積の計算float32
ndarrays
は他のデータ型よりもはるかに高速です。
プロファイリングを試してみましeinsum
たが、すべての計算を C 関数に委譲するだけなので、このパフォーマンスの違いの主な理由がわかりません。
python - 不規則な配列形状でnumpyで操作をベクトル化/テンソル化する方法
手術をしたい
通常の形状であれ ば、np.einsum を使用できます。構文は次のようになると思います
残念ながら、私のデータ X は、第 1 軸 (インデックスがゼロの場合) に非規則的な構造を持っています。
もう少し文脈を与えるために、i^ 番目のグループの j^ 番目のメンバーの p^ 番目の機能を参照します。グループのサイズは異なるため、事実上、これは長さが異なるリストのリストであり、同じ長さのリストのリストです。
通常の構造を持っているため、標準の numpy 配列として保存できます (1 次元で提供され、次に alpha.reshape(a,b,c) を使用します。ここで、a、b、c は問題固有の整数です)。
Xをリストのリストのリストまたは異なる次元のnp.arraysのリストとして保存し、次のようなものを書くことは避けたい
これは、これを行うための素晴らしい機能/データ構造ですか?それとも、部分的にのみベクトル化された実装で妥協する必要がありますか?
arrays - テンソルのnumpyドット積(3d x 2d)
現在私は使用しています
計算したい:
つまり、A は「4 つの行列のスタック」((3,2) の形状)、つまり 3 次元配列、b は「4 つのベクトルのスタック」((3,) の形状)、つまり 2 次元配列です。望ましい結果は、「4 つの行列ベクトル積のスタック」、つまりベクトルのスタック、つまり再び 2 次元配列 (形状 (3, 4)) です。
np.einsum と np.tensordot を中程度の深さで調べましたが、これらを使用して作成したソリューションは、ループ ソリューションと少なくとも同じくらい長く、読みにくいものでした。
ただし、その単純な問題にはワンライナーが必要だと思います。