Skip to main content
 首页 » 编程设计

python之使用 Numpy 计算相关系数

2025年05月04日8oomusou

我有一个值列表和一个一维 numpy 数组,我想使用 numpy.corrcoef(x,y,rowvar=0) 计算相关系数。我收到以下错误:

Traceback (most recent call last): 
File "testLearner.py", line 25, in <module> 
corr = np.corrcoef(valuesToCompare,queryOutput,rowvar=0) 
File "/usr/local/lib/python2.6/site-packages/numpy/lib/function_base.py", line 2003,  in corrcoef 
c = cov(x, y, rowvar, bias, ddof) 
File "/usr/local/lib/python2.6/site-packages/numpy/lib/function_base.py", line 1935, in cov 
X = concatenate((X,y), axis) 
ValueError: array dimensions must agree except for d_0 

我打印出我的 numpy 数组的形状并得到 (400,1)。当我使用 numpy.asarray(y) 将列表转换为数组时,我得到了 (400,)!

我相信这就是问题所在。我对 (400,1) 进行了 array.reshape 并打印出形状,我仍然得到 (400,)。我错过了什么?

提前致谢。

请您参考如下方法:

我想您可能已经假设 reshape修改原始数组的值。它不会:

>>> a = np.random.randn(5) 
>>> a.shape 
(5,) 
>>> b = a.reshape(5,1) 
>>> b.shape 
(5, 1) 
>>> a.shape 
(5,) 

np.asarray将常规列表视为 1d 数组,但您所说的原始 numpy 数组是 1d 实际上是 2d(因为它的形状是 (400,1) )。如果您想像使用二维数组一样使用列表,有两种简单的方法:

  • np.asarray(lst).reshape((-1, 1)) – -1意味着该维度“无论它需要多少”。
  • np.asarray([lst]).T – .T表示数组转置,从(1,5)切换至 (5,1) .-

您还可以通过 ary.reshape((-1,)) 将原始数组 reshape 为 1d .