用Numpy计算相关系数

时间:2011-11-03 02:43:59

标签: python arrays list numpy

我有一个值列表和一维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,)

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

我想您可能认为reshape修改了原始数组的值。它没有:

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

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

  • np.asarray(lst).reshape((-1, 1)) - -1表示“对于该维度而言需要多少”。
  • np.asarray([lst]).T - .T表示数组转置,从(1,5)切换为(5,1) .-

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

相关问题