Python 2.7 变换映射矩阵

Python 2.7 变换映射矩阵,python-2.7,numpy,pandas,Python 2.7,Numpy,Pandas,我有一个由1和0组成的二维数组,称为M,其中g行表示组,a列表示文章。M映射组和文章。如果一个给定的物品“艺术”属于“gr”组,那么我们有M[gr,艺术]=1;如果不是,我们有M[gr,art]=0 现在,我想把M转换成一个平方a x一个由1和0组成的矩阵(称为N),如果一篇文章“art1”和文章“art2”在同一组中,我们有N(art1,art2)=1和N(art1,art2)=0。N在对角线上明显与1对称 如何基于M构造N 非常感谢您的建议-如果这是琐碎的(对python来说仍然是新的…),

我有一个由1和0组成的二维数组,称为M,其中g行表示组,a列表示文章。M映射组和文章。如果一个给定的物品“艺术”属于“gr”组,那么我们有M[gr,艺术]=1;如果不是,我们有M[gr,art]=0

现在,我想把M转换成一个平方a x一个由1和0组成的矩阵(称为N),如果一篇文章“art1”和文章“art2”在同一组中,我们有N(art1,art2)=1和N(art1,art2)=0。N在对角线上明显与1对称

如何基于M构造N


非常感谢您的建议-如果这是琐碎的(对python来说仍然是新的…),请道歉

所以你有一个布尔矩阵
M
,如下所示:

>>> M
array([[1, 0, 0, 0, 0, 0],
       [0, 0, 0, 1, 0, 1],
       [0, 0, 1, 0, 0, 0],
       [1, 0, 1, 0, 0, 0]])
>>> ngroups, narticles = M.shape
你想要的是一个形状矩阵,它表示。这就是矩阵的平方:

>>> np.dot(M, M.T)
array([[1, 0, 0, 1],
       [0, 2, 0, 0],
       [0, 0, 1, 1],
       [1, 0, 1, 2]])
。。。除此之外,您不需要计数,因此请将条目>0设置为1

>>> N = np.dot(M, M.T)
>>> N[N > 0] = 1
>>> N
array([[1, 0, 0, 1],
       [0, 1, 0, 0],
       [0, 0, 1, 1],
       [1, 0, 1, 1]])

用实际代码展示一个具体的例子总是一个好主意,这样复制粘贴就容易多了。谢谢Jeff的建议