列表中的访问列表 - python

时间:2016-10-23 13:55:19

标签: python list access adjacency-matrix

我想在一个给定的biadjacency矩阵B中建立一个邻接矩阵。在python中类型是adjacency matrix。 设矩阵B = np.array([[1,2,3],[10,20,30],[3,4,5],[50,12,36],[5,6,7],[3,4,5]])及其转置Bt = np.transpose(B)。 还有两个零矩阵Z,Zt分别具有尺寸(6,6)和(3,3)。 所以A = [[Z,B],[Bt,Zt]]。但这是一个列表及其元素:

[[array([[ 0.,  0.,  0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.,  0.,  0.],
   [ 0.,  0.,  0.,  0.,  0.,  0.]]), array([[ 1,  2,  3],
   [10, 20, 30],
   [ 3,  4,  5],
   [50, 12, 36],
   [ 5,  6,  7],
   [ 3,  4,  5]])], [array([[ 1, 10,  3, 50,  5,  3],
   [ 2, 20,  4, 12,  6,  4],
   [ 3, 30,  5, 36,  7,  5]]), array([[ 0.,  0.,  0.],
   [ 0.,  0.,  0.],
   [ 0.,  0.,  0.]])]].

但是我想要这样的东西:

 [0.,  0.,  0.,  0.,  0., 0.,  1,  2,  3
  0.,  0.,  0.,  0.,  0., 0., 10, 20, 30
  0.,  0.,  0.,  0.,  0., 0., 3,  4,  5
  0.,  0.,  0.,  0.,  0., 0., 50, 12, 36
  0.,  0.,  0.,  0.,  0., 0., 5,  6,  7
  0.,  0.,  0.,  0.,  0., 0., 3,  4,  5
  1,   10,  3, 50,  5,  3,  0.,  0.,  0.
  2,   20,  4, 12,  6,  4,  0.,  0.,  0.
  3,   30,  5, 36,  7,  5,  0.,  0.,  0.]

我尝试使用列表推导但结果不正确。 如果我有原始图表我可以使用NetworX包但我现在不能。 你知道构建A的方法吗?

2 个答案:

答案 0 :(得分:1)

您尝试实现的是 concatenation ,而您的代码(以及问题开头的符号)都是关于创建多维对象的:

nmap -sn 192.168.2.2

答案 1 :(得分:0)

bmat函数使得从其他矩阵中构造矩阵非常容易,所以

A = np.bmat([[Z, B], [Bt, Zt]]).A

制作一个与你指定的一样的A.