NumPy 1.8.0とPython 2.7.3を使用して、MATLAB/OctaveプログラムをPythonに移植しようとしています。私はthis referenceを使って、MATLAB関数をNumPyメソッドに変換するのを助けてくれました.2つの行列間の相関関係を計算したいところに到達するまでは大成功でした。MATLAB/Octave corrとPython numpy.correlateの違いは何ですか?
第1の行列は40000x25浮動小数点数であり、第2の行列は40000x1整数です。 Octaveでは文corr(a,b)
を使用し、浮動小数点数の25x1の行列を取得します。 numpyの中の対応する方法(numpy.correlate(a,b)
)を生成しようとしてエラー:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/numpy-1.8.0.dev_1a9aa5a_20130415-py2.7-macosx-10.8-intel.egg/numpy/core/numeric.py", line 751, in correlate
return multiarray.correlate2(a,v,mode)
ValueError: object too deep for desired array
は私がそうように、a
の各列の相関を計算するためのコードを変更した場合、それが仕事を得ることができる:
for i in range(25):
c2[i] = numpy.correlate(a[:,i], b)
ただし、c2
配列の値はOctaveの出力とは異なります。 Octaveは25x1の浮動小数点数の行列を返します。NumPyから得られる値は、-270と900の間の浮動小数点数です。
2つのアルゴリズムが何をしているのか理解しようとしましたが、悲惨に失敗しました。誰かが私の論理故障を指摘できますか?
私はそれを試みたが、 'numpy.cov(a、b)は' floatの2x2の配列を返し、私は方法がわからないてきましたその相関に関連する。 – Crystal
または[Pearson's r](http://docs.scipy.org/doc/scipy-0.12.0/reference/generated/scipy.stats.pearsonr.html) – Rasman
または[this](http: /docs.scipy.org/doc/numpy/reference/generated/numpy.corrcoef.html) – Rasman