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