問題タブ [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 に答える
2414 参照

python - numpy 3D 内積

2 つの 3dim numpy 行列があり、ループを使用せずに 1 つの軸に従ってドット積を実行したい:

a は (7, 4, 15) の形状を持ち、b は (7, 4, 5) の形状を持ちます。以下のように c=np.dot(a,b) のサイズを (7,5,15) にしたい:

しかし、for ループのない解決策を探しています。何かのようなもの:

しかし、これは期待どおりに機能しません。

私もこれを試しました:

期待どおりに機能しませんでした。

何か案は?

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

python - float または ndarray を引数とする numpy 関数

次のコードを検討してください。

最初の呼び出しf(x1, y1)は期待どおりに機能します。

2 番目の呼び出しでは、float が機能する前に「変換」する必要があります (変換をユーザーに対して透過的にしたいので、関数の定義に変換を含める必要があります)。

3 番目の呼び出しはまったく機能せず、最初の呼び出しと同じように関数の定義を調整する方法がわかりませんが、グリッド上のいくつかのポイントに対してです。

何か案は?ありがとう。

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

python - 単純な減算により、さまざまな配列形状でブロードキャストの問題が発生する

このリンクを使用して問題を解決しようとしましたが、numpy ブロードキャストについて説明していますが、役に立ちませんでした。次のnumpy配列を減算する方法:

私が行うとき、X - X_meanそれは述べています:

しかし、実行X[0] - X_mean[0]すると正しい出力が得られます。

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

python - numpy.frompyfunc を使用して、引数を持つ Python 関数にブロードキャストを追加します

のような配列db(およそ になります(1e6, 300)) とmask = [1, 0, 1]ベクトルから、最初の列でターゲットを 1 として定義します。

の対応する行が and と一致するものと、それ以外の場所のゼロoutで構成されるベクトルを作成したいと考えています。dbmasktarget==1

ベクトル 101 と 111 がマスクに適合することを確認するために を使用して各配列行に をvline適用し、インデックスのみを保持する関数を定義しました。masknp.array_equal(mask, mask & vector)target == 1

outに初期化されますarray([0, 0, 0, 0, 0, 0])

vline関数は次のように定義されます。

この関数を 1 行forずつループに適用すると、正しい結果が得られます。

vline今、次を作成してベクトル化したいufunc:

しかし、ufuncこれらの形状で入力をブロードキャストすることについて不満があります。

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

python - numpy の画像を含むテンソルの乗算

次の 3 次テンソルがあります。両方のテンソルは、100 個の 10x9 行列を含む最初のテンソルと 100 個の 3x10 行列を含む 2 番目のテンソルを行列化します (この例では 1 つだけ入力しました)。

私の目的は、行列を 1 対 1 の対応として並べて乗算することです。これにより、形状のあるテンソルが得られます。 (100, 3, 9)これは、両方のテンソルを圧縮してからそれぞれのドットを取る for ループで実行できますが、私は探していますnumpy 演算子だけでこれを行うには。これまでのところ、失敗した試みがいくつかあります

試行 1:

試行 1 の出力:

(100、3、100、9)

つまり、考えられるすべての組み合わせを試したということです...これは私が求めているものではありません。

実際には、他の試みはコンパイルさえしません。np.tensordot 、 np.einsum を使用してみました(ここでhttps://jameshensman.wordpress.com/2010/06/14/multiple-matrix-multiplication-in-numpyを読んでくださいアインシュタインのインデックスを正しく取得してください)また、同じリンクに、私が視覚化できなかったクレイジーなテンソルキューブの再形成方法があります。これに取り組む方法についての提案/アイデアの説明はありますか?

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

python - Python/Numpy が行列/ベクトル内積に行ベクトルを必要とするのはなぜですか?

行列と列ベクトルの内積を計算したいとします。

行列ドット ベクトル

したがって、Numpy/Python では次のようになります。

結果:

配列([[13]、[31]、[49]])

これまでのところ、非常にうまくいっていますが、なぜこれも機能しているのでしょうか?

結果:

配列([13, 31, 49])

[2,1,3] は行ベクトル (ドット積を適用するには転置が必要) であると予想しますが、Numpy はデフォルトで配列を列ベクトルとして認識しているようです (行列乗算の場合)?

これはどのように作動しますか?

編集:

そして、その理由は次のとおりです。

そのため、マトリックス ドット ベクトル配列は機能します (そのため、列ベクトルとして認識されます) が、他の操作 (転置) は機能しません。これは本当に一貫したデザインではありませんね。

0 投票する
3 に答える
58 参照

arrays - Numpy: 4 つの (x,y) 配列から (x,y,2,2) 配列を作成する

ブロードキャストに問題があります。可能であれば、for ループを使用せずに、形状 x、y の 4 つの異なる配列の要素を 2x2 行列に割り当てられるようにしたいと考えています。

明らかにこれは機能しませんが、x に次の配列を出力してもらいたいです。

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

python - 複数のパラメーター推定。放送の問題

非線形最小二乗回帰でパラメーター (kf、beta1、beta2、gamma) を取得する必要があります。エラー メッセージは次のとおりです。

収集した次のデータを使用して 4 つの実験を行いました。

  • Flujo_ms(x-axis Data): 7 つの位置を持つ配列
  • "fri": 各 "fri" は 7 つの位置の配列です。
  • brfv: 実験ごとに 1 つの定数の 4 つの定数値を取ります。

4 つの実験を一緒に使用して、パラメーター推定の誤差を最小限に抑えたいと考えています。