問題タブ [array-broadcasting]
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 - ブロードキャストを使用してこのコードを高速化するには?
次の多次元配列があります。最初の軸は 3 次元ベクトルを表します。それぞれの 3 行 3 列の行列 x⋅x' を計算したいと思います。
私の現在の解決策:
この for ループは、25,276,416 個の要素すべてを反復処理し、約 1 ~ 2 分かかります。
python - 列ごとに配列をブロードキャストする方法は?
行列のすべての列をnumpy配列に追加したいのですが、行列のnumpy.broadcast
すべての行を配列に追加することしかできません。これどうやってするの?
私の考えは、最初に行列を転置し、それを配列に追加してから転置することですが、これは 2 つの転置を使用します。直接行う機能はありますか?
python - NumPy ndarray ブロードキャスト - (X,Y) で操作する形状 (X,) と (X, 1)
(32, 1024) の形をした NumPyndarray
があり、32 個の信号測定値を保持します。これを 1024 要素の長い配列に結合し、32 個ごとに異なる重みを付けます。使用してnumpy.average
いましたが、重みは複雑で、average
私の結果を捨てる合計に基づいて重みの正規化を実行します。
平均のコードを見ると、重みに信号配列を掛けてから、最初の軸を合計することで同じことを達成できることがわかりました。ただし、(32,) 重み配列を (32, 1024) 信号配列で乗算しようとすると、(32,) を (32, 1024) にブロードキャストできないため、次元の不一致が発生します。weights 配列を (32, 1) に再形成すると、すべてが期待どおりに機能しますが、かなり醜いコードになります。
NumPy が (32,) 配列を (32, 1024) にブロードキャストできない理由を説明したり、加重平均を実行する別のより適切な方法を提案したりできますか?
python - 2次元配列の列と複数の列の比較をブロードキャストする
2次元ndarrayで1つの列を他の列と比較するための正しいnumpy構文は何ですか?
アレイブロードキャストに関するいくつかの ドキュメントを読んだ後でも、これを行う正しい方法が何であるかはまだよくわかりません。
例: 各ゲーム (列) で各プレーヤー (行) が得点したゴールの 2 次元配列があるとします。
最終ゲームで、プレーヤーが以前のゲームよりも多くのゴールを決めて個人記録を達成したかどうかを知りたいですnan
。True
配列内の最初と最後のプレーヤーのみ を期待しています。
書くだけgoals[:,2] > goals[:,:2]
でValueError: operands could not be broadcast together with shapes (5,) (5,2)
私が試したこと:(5,)
手動でをに引き伸ばすことができることを知ってい(5,2)
ますnp.newaxis
。したがって、これは機能します:
これを書くためのハックが少なく、より慣用的にnumpyな方法はありますか?
python - Pythonで特定の軸に沿って操作をブロードキャストする
Python で、サイズnxnnumpy
の正方行列Xと、サイズ n のベクトル a があるとします。numpy
非常に簡単に言えば、 X - aのブロードキャスト減算を実行したいのですが、軸0または軸1のいずれかに沿って減算を指定できるように、どの次元に沿って指定できるようにしたいのですか?
軸の指定方法を教えてください。
python - リストによるとげのある折りたたみ列
にはNumPy
、d x n
配列と長さA
のリストがあり、行列の各列をどこに配置するかを記述しています。アイデアは、行列の列は、 の対応する値が である のすべての列の であるということです。L
n
A
B
i
B
sum
A
L
i
for
ループでこれを行うことができます:
A
配列をスライスすることによって(または他の方法でベクトル化された方法で)これを行う方法があるかどうか疑問に思っていましたか?
python - numpyでedgelistから「neigborhood」の値を累積する
各ノードがkタイプのいずれかになる無向ネットワークがあります。ノードiごとに、ノードiが持つ各タイプの隣接ノードの数を計算する必要があります。
現在、列がノードのインデックスであるエッジリストでエッジを表しています。ノードはnxk行列として表され、各列はノード タイプを表します。ノードがk型の場合、k番目の列の値は 1、それ以外の場合は 0 です。
これが私の現在のコードです。これは正しいですが、遅すぎます。
この for ループを回避できる巧妙な numpy はありますか? これを行う最善の方法が隣接行列を使用する場合、それも許容されます。