2016-04-15 10 views
2

私はnumpyの2次元配列である隣接行列を持たなければならず、2つの要素の間の同様の要素の数を数えたいと思います。これはばかげて聞こえるかもしれませんし、単純なforループを使って行うことができますが、そうするためのオンライナーがあるのでしょうか?私は大きな行列を扱っているので、それを行うより速い方法かもしれません。Python:2つの行列の類似の要素を数える

adj1 = graph1.get_adjacency() 
adj2 = graph2.get_adjacency() 

count = 0 
for i in range(len(adj1)): 
    for j in range(len(adj1)): 
     if adj[i][j] == adj[i][j]: 
      count += 1 

答えて

3

これを試してみてください:

np.sum(adj1 == adj2) 

をADJ1とADJ2のDTYPEがフロートの場合:次のコードは、私が今持っているものである次のことができるようにしたい場合

np.sum(np.isclose(adj1, adj2)) 
1

adj1とadj2を比較した結果を使用してください。これを2行に分けてください:

test = np.equal(adj1,adj2) 
count = sum(test[test == True]) 

しかし、これは受け入れられた答えと同じ結果を与えます。

+0

'test == True'はノーオペレーションですか、いいえ? – Veedrac

+0

@Veedrac私はそう信じていないが、投稿を編集した。私が言っていたことは 'count = sum(test [test == True])' – Nate

+0

でした。あなたはそれを必要としません、 'sum(test)'はまったく同じことをします。 – Jaime

関連する問題