我有一个值列表和一维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,)
。我错过了什么?
提前致谢。
答案 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。