問題タブ [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.

0 投票する
1 に答える
85 参照

python - ブロードキャストを使用してこのコードを高速化するには?

次の多次元配列があります。最初の軸は 3 次元ベクトルを表します。それぞれの 3 行 3 列の行列 x⋅x' を計算したいと思います。

私の現在の解決策:

この for ループは、25,276,416 個の要素すべてを反復処理し、約 1 ~ 2 分かかります。

0 投票する
1 に答える
4723 参照

python - 列ごとに配列をブロードキャストする方法は?

行列のすべての列をnumpy配列に追加したいのですが、行列のnumpy.broadcastすべての行を配列に追加することしかできません。これどうやってするの?

私の考えは、最初に行列を転置し、それを配列に追加してから転置することですが、これは 2 つの転置を使用します。直接行う機能はありますか?

0 投票する
1 に答える
1585 参照

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) にブロードキャストできない理由を説明したり、加重平均を実行する別のより適切な方法を提案したりできますか?

0 投票する
2 に答える
450 参照

python - 2次元配列の列と複数の列の比較をブロードキャストする

2次元ndarrayで1つの列を他の列と比較するための正しいnumpy構文は何ですか?

アレイブロードキャストに関するいくつかの ドキュメントを読んだ後でも、これを行う正しい方法が何であるかはまだよくわかりません。

例: 各ゲーム (列) で各プレーヤー (行) が得点したゴールの 2 次元配列があるとします。

最終ゲームで、プレーヤーが以前のゲームよりも多くのゴールを決めて個人記録を達成したかどうかを知りたいですnanTrue配列内の最初と最後のプレーヤーのみ を期待しています。

書くだけgoals[:,2] > goals[:,:2]ValueError: operands could not be broadcast together with shapes (5,) (5,2)

私が試したこと:(5,)手動でをに引き伸ばすことができることを知ってい(5,2)ますnp.newaxis。したがって、これは機能します:

これを書くためのハックが少なく、より慣用的にnumpyな方法はありますか?

0 投票する
2 に答える
7998 参照

python - Pythonで特定の軸に沿って操作をブロードキャストする

Python で、サイズnxnnumpyの正方行列Xと、サイズ n のベクトル a があるとしますnumpy

非常に簡単に言えば、 X - aのブロードキャスト減算を実行したいのですが、軸0または軸1のいずれかに沿って減算を指定できるように、どの次元に沿って指定できるようにしたいのですか?

軸の指定方法を教えてください。

0 投票する
2 に答える
557 参照

python - リストによるとげのある折りたたみ列

にはNumPyd x n配列と長さAのリストがあり、行列の各列をどこに配置するかを記述しています。アイデアは、行列の列は、 の対応する値が である のすべての列の であるということです。LnABiBsumALi

forループでこれを行うことができます:

A配列をスライスすることによって(または他の方法でベクトル化された方法で)これを行う方法があるかどうか疑問に思っていましたか?

0 投票する
2 に答える
102 参照

python - numpyでedgelistから「neigborhood」の値を累積する

各ノードがkタイプのいずれかになる無向ネットワークがあります。ノードiごとに、ノードiが持つ各タイプの隣接ノードの数を計算する必要があります。

現在、列がノードのインデックスであるエッジリストでエッジを表しています。ノードはnxk行列として表され、各列はノード タイプを表します。ノードがk型の場合、k番目の列の値は 1、それ以外の場合は 0 です。

これが私の現在のコードです。これは正しいですが、遅すぎます。

この for ループを回避できる巧妙な numpy はありますか? これを行う最善の方法が隣接行列を使用する場合、それも許容されます。