我正在尝试使用NumPy 1.8.0和Python 2.7.3将MATLAB/Octave程序移植到Python.我已经使用这个参考作为帮助将MATLAB函数转换为NumPy方法取得了巨大成功,直到我想要计算两个矩阵之间的相关性.
第一个矩阵是40000x25浮点数,第二个矩阵是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
Run Code Online (Sandbox Code Playgroud)
如果我更改代码来计算每列的相关性,我可以让它工作a,如下所示:
for i in range(25):
    c2[i] = numpy.correlate(a[:,i], b)
Run Code Online (Sandbox Code Playgroud)
但是,c2数组中的值与Octave的输出不同.Octave返回一个25x1的浮点矩阵,小于1.我从NumPy得到的值是-270到900之间的浮点数.  
我试图了解这两种算法在引擎盖下做了什么但却失败了.有人可以指出我的逻辑失败吗?
我使用的是Mac OS X v10.8.5 (Mountain Lion)。我已经安装了 NI-VISA 5.4 和 PyVisa 1.5。当我尝试“进口签证”时,我得到以下回溯:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named visa
Run Code Online (Sandbox Code Playgroud)
打印 sys.path 在列表中显示:
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyVISA-1.5.dev0.dev-py2.7.egg
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个:
import pyvisa
from pyvisa.vpp43 import visa_library
visa_library.load_library("/Library/Frameworks/VISA.framework/VISA")
import visa
Run Code Online (Sandbox Code Playgroud)
但我得到了同样的错误。
为什么找不到模块?我缺少什么?
更新:我意识到 PyVisa 1.5 是一个开发版本,所以我安装了 PyVisa 1.4(我尝试了两个MacPort,只是下载了 tarball 并手动安装)。我仍然遇到同样的错误。