在numpy中将协方差表转换为协方差矩阵的最简单方法

在numpy中将协方差表转换为协方差矩阵的最简单方法,numpy,Numpy,假设您加载一个如下所示的相关性表: pd.DataFrame([['A', 'B', 1], ['B', 'C', 2], ['A', 'C', 3], ['C', 'D', 100]]) 1是A和B之间的协方差,2是B和C之间的协方差,以此类推 将其转换为以下内容最优雅(可读+高效)的方式是什么: np.array([[1, 1, 3, 0], [1, 1, 2, 0], [3, 2, 1, 100], [0, 0, 100, 1]]) A、B、C和D的完整协方差矩阵,假设未写入的关系为0

假设您加载一个如下所示的相关性表:

pd.DataFrame([['A', 'B', 1], ['B', 'C', 2], ['A', 'C', 3], ['C', 'D', 100]])
1是A和B之间的协方差,2是B和C之间的协方差,以此类推

将其转换为以下内容最优雅(可读+高效)的方式是什么:

np.array([[1, 1, 3, 0], [1, 1, 2, 0], [3, 2, 1, 100], [0, 0, 100, 1]])

A、B、C和D的完整协方差矩阵,假设未写入的关系为0(在我的例子中为真)。变量可以是任意顺序。

首先,正如我在评论中提到的,使用带有strign和数字的
ndarray将所有变量转换为字符串。因此,必须将第一个表中的相关值转换回浮点值

假设第一个表是这样的:

pd.DataFrame([['A', 'B', 1], ['B', 'C', 2], ['A', 'C', 3], ['C', 'D', 100]])
correlations=np.array([[0,1,1],[1,2,2],[0,2,3],[2,3100])
其中,
'A'
为0,
'B'
为1,依此类推

您可以这样创建所需的矩阵:

pd.DataFrame([['A', 'B', 1], ['B', 'C', 2], ['A', 'C', 3], ['C', 'D', 100]])
matrix=np.identity(变量计数)
对于相关性中的相关性:
i、 j,值=相关性
i、 j=int(i),int(j)
矩阵[i,j]=矩阵[j,i]=值

其中,
var\u counts
是第一个表中的变量数。

我不认为同时使用字符串和数字的ndarray是个好主意。