我有一个数组
norm_array=np.array([[1, 133, 1, 5.73, 5.09, 11.12, 10.16, 3.38, 15, 3, 8, 7, 4, 5, 1,
6, 1, 2, 18, 12, 48],
[1, 185, 0, 4.34, 3.66, 18.23, 14.91, 0, 21, 15, 11, 2, 4, 4, 5,
4, 9, 8, 27, 14, 47],
[1, 133, 1, 5.92, 4.63, 9.66, 7.77, 7.18, 9, 20, 4, 11, 9, 1, 7,
5, 3, 7, 29, 1, 45],
[1, 165, 1, 4.26, 4.57, 16.05, 16.21, 8.81, 17, 17, 5, 10, 7, 7,
6, 3, 8, 6, 29, 7, 40],
[1, 48, 11, 7.13, 8.51, 15.43, 17.74, 11.49, 20, 14, 6, 12, 6, 7,
6, 8, 8, 6, 39, 16, 38]])
我想计算一个相关性,但np.corrcoeffe返回nan
cor=[]
f=norm_array[:, 0]
for j in range(norm_array.shape[1]):
s=norm_array[:, j]
cor.append(np.corrcoef(f.astype(np.float32), s.astype(np.float32))[0, 1])
屏幕截图
您正在计算两个向量f
和s
之间的Pearson相关性。这需要两个矢量的标准偏差值。由于f
只由一个组成,所以标准偏差为0,因为你需要除以这个值,所以它给出了nan。
打印f
:时
>>> f
array([1., 1., 1., 1., 1.])
将norm_array
的第一个值更改为例如2
将得到"正常"结果。