【发布时间】:2020-12-11 04:34:35
【问题描述】:
相关矩阵是一个对称矩阵,这意味着它的上对角元素和下对角元素互为镜像,统称为非对角元素(相反对角元素,在任何相关矩阵中都等于 1,因为任何变量与自身的相关性都只有 1)。
只要下对角线中的第 i 行号和第 j 列号在上对角线中交换,即变量 1 和 2(第 1 行,第 2 列)对于变量 2 和 1(第 2 行,第 1 列)是相同的。因此,我们只需要重新计算下对角线元素,并将其复制到矩阵的上对角线中对应的位置
import numpy as np
from numpy.random import randn
X = randn(20,3)
Rho = np.corrcoef(X.T) #correlation matrix
print(np.tril(Rho)) #lower off-diagonal of matrix Rho to re-calculate, then copy to other side
表演
array([[ 1. , 0. , 0. ],
[-0.03003281, 1. , 0. ],
[-0.02602238, 0.06137713, 1. ]])
为以下步骤序列编写“i 不等于 j”循环的最有效方法是什么:
- 根据一些 apply 函数重新计算对称矩阵的下非对角线元素(为简单起见,我们只需为这些元素中的每一个添加 +2)
- 将相同的计算翻转到其镜像上(对应的上非对角线)
- 另外,将对称矩阵的 diagonal 元素替换为填充 10 的向量(而不是相关矩阵中的 1)
目的是生成一个新矩阵,它是对原始矩阵的重新计算。
【问题讨论】:
标签: python arrays matrix statistics diagonal