-1

値のNx1ベクトルがあります。私がやりたいのは、各値がi番目とj番目の値の差を表すNxN行列を作成することです。これは、大きな相関行列のようなものです。私はこれをループで実行しましたが、このベクトルが非常に大きくなる可能性があるため、Pythonのベクトル化機能を使用してアプローチするためのよりエレガントな方法を探しています。私は、抽象的な答えを持ったいくつかの質問があることを理解しています。

bsxfunPythonでMATLABの関数を複製するにはどうすればよいですか?

bsxfun ここを見つけるためにSEに質問を投稿しましたが、Pythonでも同じことを行う必要があります。

4

1 に答える 1

3

何が欲しいのか完全にはわかりませんが、numpyのブロードキャストルール(概要についてはこちらbsxfunを参照)は、 Just Works(tm)であるため、ほとんどの時間は必要ないことを意味します。たとえば、私があなたが何をしているのか理解しているなら、

>>> a = np.array([1,3,5,7,9])
>>> a - a[:,None]
array([[ 0,  2,  4,  6,  8],
       [-2,  0,  2,  4,  6],
       [-4, -2,  0,  2,  4],
       [-6, -4, -2,  0,  2],
       [-8, -6, -4, -2,  0]])

動作するはずです。

于 2013-02-18T17:13:05.227 に答える