我有一个 MxN 二维 numpy 数组“A”,其中 M 是观察的数量,N 是被检查的变量的数量。
A 中的每个条目可以是 1 或 0,1 表示在该观察中存在变量,0 表示不存在该变量。
我想根据变量的存在创建一个 NxN 互频矩阵“B”。 “B”中索引 [i,j] 的条目将引用“A”中同时存在变量 i 和变量 j 的行数。
举个例子:
矩阵 A 有 4 个观测值和 3 个变量:
array([[1, 1, 0],
[1, 1, 0],
[0, 1, 1],
[1, 0, 0]])
创建 B 会产生:
array([[3, 2, 0],
[2, 3, 1],
[0, 1, 1]])
解决这个问题的好方法是什么?谢谢。
最佳答案
您可以使用 matmul
将矩阵 A
的转置乘以矩阵 A
,得到您想要的答案。
a = np.array(
[[1, 1, 0],
[1, 1, 0],
[0, 1, 1],
[1, 0, 0]]
)
>>> np.matmul(a.T, a)
array([[3, 2, 0],
[2, 3, 1],
[0, 1, 1]])
关于python - Numpy,观察中变量对的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56796674/