python - Numpy,观察中变量对的频率

标签 python arrays numpy

我有一个 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/

相关文章:

python - 使用剪刀将多边形偏移米

c++ - "dynamically allocated memory emulating multi-dimensional array"的正确术语?

php - 无法在 PHP 中连接 2 个数组

python - 在 Numpy 中乘积 block 矩阵

python - 提高 Pandas 行最近邻居的性能

Python:使用 itertools 将列表拆分为组的参数

python - 安装枕头错误

python - Windows下使用python3的模块加载spatialite

java - 从数组打印我的对象时出错

python - 将 Pandas 索引中的分组数组元素转换为 Python 中的单个数组元素