2016-10-23 7 views
-1

私は隣接行列を与えたいと思うbiadjacency行列B. pythonのタイプはadjacency matrixです。 行列をとし、その転置をBt = np.transpose(B)とします。 また、次元(6,6)および(3,3)を有する2つのゼロ行列Z、Ztをそれぞれ表します。 だからA = [[Z,B],[Bt,Zt]]。私はリストの内包butthe結果で動作するようにしようとしているリストからのアクセスリスト - python

[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.] 

が正しくない:

[[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.]])]]. 

は、しかし、私はこのような何かをしたい:しかし、これはリストとその要素です。 元のグラフがあれば、NetworXパッケージを使用できましたが、今はできません。 Aを構築する方法をご存知ですか?多次元オブジェクトの作成に関する

+0

リストを「平坦化」したいようです。 – Carcigenicate

+1

は '.concat'、' .hstack'、 '.vstack'について読んでいます。これは必要な操作なので、あなたの表記は[concat_on_top_of_each_other((Z | B)、(Bt | Zt))を実行した後の結果である[[Z、B]、[Bt、Zt] – lejlot

答えて

1

何を達成しようとすると、(問題の初めにと表記)連結、しばらくあなたのコードの両方でされています

>>> X = np.ones((3, 6)) 
>>> Y = np.ones((6, 3)) * 2 
>>> Z1 = np.zeros((6,6)) 
>>> Z2 = np.zeros((3,3)) 
>>> 
>>> np.vstack((Z1, X)) 
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.], 
     [ 1., 1., 1., 1., 1., 1.], 
     [ 1., 1., 1., 1., 1., 1.], 
     [ 1., 1., 1., 1., 1., 1.]]) 
>>> np.vstack((Y, Z2)) 
array([[ 2., 2., 2.], 
     [ 2., 2., 2.], 
     [ 2., 2., 2.], 
     [ 2., 2., 2.], 
     [ 2., 2., 2.], 
     [ 2., 2., 2.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.]]) 
>>> np.hstack((np.vstack((Z1, X)), np.vstack((Y, Z2)))) 
array([[ 0., 0., 0., 0., 0., 0., 2., 2., 2.], 
     [ 0., 0., 0., 0., 0., 0., 2., 2., 2.], 
     [ 0., 0., 0., 0., 0., 0., 2., 2., 2.], 
     [ 0., 0., 0., 0., 0., 0., 2., 2., 2.], 
     [ 0., 0., 0., 0., 0., 0., 2., 2., 2.], 
     [ 0., 0., 0., 0., 0., 0., 2., 2., 2.], 
     [ 1., 1., 1., 1., 1., 1., 0., 0., 0.], 
     [ 1., 1., 1., 1., 1., 1., 0., 0., 0.], 
     [ 1., 1., 1., 1., 1., 1., 0., 0., 0.]]) 
0

bmat機能は、他の外に行列を構築します行列はとても簡単ですので、

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

あなたが指定したのと同じようにAを作成します。

関連する問題