一、参数
np.corrcoef(x, y, rowvar)
x: Union[ndarray, Iterable, int, float]
可以为ndarray类型、可迭代类型,int类型,float类型的一个集合
y: Union[ndarray, Iterable, int, float, None] = None
默认为空,也可以为ndarray类型、可迭代类型、int类型、float类型的一个集合
rowvar: Optional[bool] = True
默认为True,当为True时,拿每一行的第一个元素和该行各个元素进行相关系数的计算,反之亦然。
二、示例
1. y == None
假设有以下数据:
x = np.array([[3, 6, 9], [64, 50, 80], [100, 200, 500])
cof = np.corrcoef(x)
print(cof)
首先明确,当y = None时,生成的cof大小是一个len(x) * len(x)也就时3 * 3大小的矩阵。拿矩阵的第一行举例,就是拿[3, 6, 9]这个元素分别和[3, 6, 9], [95, 50, 1], [100, 200, 500]作相关系数计算(包括自身)。当然第二行就是拿第二个元素和该行的三个元素进行计算。
结果为:
[[1. 0.53293871 0.96076892]
[0.53293871 1. 0.7467118 ]
[0.96076892 0.7467118 1. ]]
当想要知道[3, 6, 9]和[100, 200, 500]之间的相关系数,只需要cof[0, 2]就可以拿出来了。
2、y != None
当x = [x1, x2, x3], y = [y1, y2, y3]
此时的cof矩阵大小为(len(x) + len(y)) * (len(x) + len(y))。
cof矩阵为一个6 * 6的矩阵
前两行如下:
f(x1, x1), f(x1, x2), f(x1, x3), f(x1, y1), f(x1, y2), f(x1, y3)
f(x2, x1), f(x2, x2), f(x2, x3), f(x2, y1), f(x2, y2), f(x2, y3), 其中f为计算相关系数
假设有以下数据:
x = np.array([[3, 6, 9], [64, 50, 80], [100, 200, 500]])
y = np.array([[32, 42, 50], [9, 8, 7], [40, 90, 200]])
cof = np.corrcoef(x, y)
print(cof)
此时的cof矩阵为:
[[ 1. 0.53293871 0.96076892 0.99794872 -1. 0.97735555]
[ 0.53293871 1. 0.7467118 0.47767605 -0.53293871 0.69991988]
[ 0.96076892 0.7467118 1. 0.94104259 -0.96076892 0.99770115]
[ 0.99794872 0.47767605 0.94104259 1. -0.99794872 0.96180418]
[-1. -0.53293871 -0.96076892 -0.99794872 1. -0.97735555]
[ 0.97735555 0.69991988 0.99770115 0.96180418 -0.97735555 1. ]]
假设此时想要x中[64, 50, 80]和y中[40, 90, 200]的相关系数,只需要拿出cof[1, 5]