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

python - この np.einsum('kij',A) の結果を理解する方法は?

例えば、

これはまだA問題ありません。

しかし、私が行うとprint np.einsum('kij', A)、形状は(3, 4, 2). そうではない(4, 2, 3)でしょうか?

print np.einsum('cab', A)形状の(4, 2, 3)仕上がりも問題ありません。なぜprint np.einsum('kij', A)同じではないのですか?

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

python - Pythonでの累積和のベクトル化

コードを高速化するために、コードをベクトル化/ブロードキャスト (正式には何と呼ばれているかわかりません) しようとしていますが、うまく取得できません。私が使用すべきだと思うのは numpy.cumsum (軸 = 0) ですが、それを正しい配列で (高速に) 取得して使用する方法がわかりません。

このコードで必要なのは、基本的に、l2 の各要素を l1 のすべての数値に追加するための l1 の絶対合計です。したがって、これは 1 つの答えではなく、len(l2) の量の答えを与えます。以下の (ベクトル化されていない) コードは、正しい出力を提供します。

誰でも答えやヒントを提供できますか?

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

python - 異なる形状のnumpy配列を効率的に減算する

numpy の優れたブロードキャスト ルールを使用するとv、形状 (5,3) 配列から形状 (3,) 配列Xを減算できます。

結果は、各行iが差である形状 (5,3) 配列X[i] - vです。

ループを明示的に使用せずに、配列全体から各行が減算wXれるように、形状 (n,3) 配列を減算する方法はありますか?wX

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

python - ぎざぎざのスライスを取るためのnumpyの省略形

私は一般的に行っている操作を持っていますが、それを「ギザギザスライス」と呼んでいます。その本当の名前がわからないからです。例によって最もよく説明されています:

唯一の問題は、このインデックス作成を行うのが少し面倒なことですa[np.arange(a.shape[0]), entries_of_interest](このためだけに "np.arange(a.shape[0])" を作成する必要があるのはばかげているようです)。:これにはオペレーターのようなものが欲しいのですが、 は別の:ことをします。この操作を行うためのより簡潔な方法はありますか?

ベストアンサー:

いいえ、ネイティブ numpy を使用するより良い方法はありません。必要に応じて、このためのヘルパー関数を作成できます。

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

python - 未知の次元のテンソルの要素ごとの乗算

次の形状でテンソルの要素ごとの乗算を行うにはどうすればよいですか? ここでの 2 番目の配列は、常に 2D であると見なされます。

? とマークされたすべての次元でブロードキャストしたいのですが、その数はアプリオリにはわかりません。私が検討した可能な解決策(しかし、方法がわからない):

  • 可変数の軸を 2 番目の配列に追加します
  • 両方の配列の軸の順序を逆にしてから、もう一度逆にします

どんな指針も素晴らしいでしょう。

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

python - 個別の 1D np.arrays を 2D np.arrays のリストに変換します

3 つの 1D 配列を 2D 配列のリストに変換しようとしています。空の ndarray を作成し、行ごとに入力することで、これを行うことができました。誰かが私にもっとエレガントなアプローチを見せてもらえますか?

機能する現在の洗練されていないアプローチ:

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

python - 行列とベクトルの間の派手なブロードキャスト?

私はでこぼこの線形代数を学んでおり、簡単な計算を実行したい: 私は持っている:

計算/出力したいもの:

基本的に、m の各行と v の各要素の間で要素ごとの除算を実行する

おそらくいくつかのforループを介してそれを行うことができますが、それを行う「適切な」方法を知りたいです。

放送と何か関係があるような気もしますが、それだけです。

ありがとう。

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

python - Pandas Dataframe をループしてダミー変数を作成する効率的な方法 (1 または 0 入力)

私はデータ サイエンスを学んでおり、データセットのダミー変数を作成したいと考えています。

["Category1", "Category2".."CategoryN"] のような一致するカテゴリのリストである「製品カテゴリ」列を持つデータフレームがあります。

Pandas にはダミー変数を自動的に作成する便利な機能 (pandas.get_dummies) があることは知っていますが、この場合は使用できないのではないでしょうか (?)。

各行をループして、各列の一致する要素に 1 を追加する方法を知っています。私の現在のコードはこれです:

ただし、上記のコードは効率的ではなく、100,000 行を超えるため使用できません。どういうわけか配列全体で操作を行いたいのですが、その方法がわかりません。

誰か助けてくれませんか?

0 投票する
4 に答える
3187 参照

python - numpy.dot がこのように動作するのはなぜですか?

dotnumpy の関数がそのように動作する理由を理解しようとしています。

np.dot(M, V1)これで、期待どおりにnp.dot(M, V2)動作します。しかしV3V4結果は私を驚かせます:

私は期待(2, 9, 5)し、(3, 2, 9, 5)それぞれ。一方、np.matmul 私が期待することはありますか: 行列の乗算は、2 番目の引数の最初のN - 2次元にわたってブロードキャストされ、結果は同じ形状になります:

np.dotだから私の質問はこれです:それがそうするように振る舞う理由は 何ですか?それは何らかの特定の目的に役立つのでしょうか、それとも何らかの一般的な規則を適用した結果なのでしょうか?