3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

pythonライブラリ networkx 使ってみた(Part1)

Last updated at Posted at 2022-04-15

個人的に使い方に困ったpythonライブラリnetworkxの紹介をしたいと思います。
今回はとりあえずPart1ということで、発見があり次第、都度更新していこうと思います。
(間違ってたらすいません🙏)

# networkxライブラリをインポートする。
import networkx as nx

networkxがインストールされてないと、エラーが出るかもしれないです。その場合は以下の文言をターミナルで実行すれば解消すると思います。

\pip install networkx

とりあえず使ってみる

N_x = 5 # N_x:ノード数
m = 3 # m:結合数
t = 0 # シード値

# グラフを作成
graph = nx.gnm_random_graph(N_x, m, t)

graphの型を確認してみる。

type(graph)
==> networkx.classes.graph.Graph

個人的には初めて見た型でした、、
次に実際にgraphを描写してみます。

nx.draw_networkx(graph)
plt.show()

結果は以下のようになります。ノード数:5, 結合数:4になっていることが確認できます。
networkx_graph5_4.png

次にノード数は変えず(N_x = 5)、結合数を全結合に変更してみます。

N_x = 5
m = N_x*(N_x-1) # 全結合は(N_x)×(N_x-1)
t = 0
graph_all = nx.gnm_random_graph(N_x, m, t)

先ほど同様に描写してみます。

nx.draw_networkx(graph_all)
plt.show()

結果は以下のようになります。ノード間が全て結合できていることが確認できます。
networkx_graph5_all.png

実際にgraphやgraph_allって中身どうなってるの?って疑問が湧きました。
そこで、graphやgraph_allの中身を見てみます。
中身を見るために、array型に変換します。(他の方法があるかもしれないですが、、、)

# 型をarrayに変換する
graph_array = nx.to_numpy_array(graph)
graph_all_array = nx.to_numpy_array(graph_all)

graph_array 
==>>
[[0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 1.]
 [1. 0. 0. 1. 0.]
 [0. 0. 1. 0. 1.]
 [0. 1. 0. 1. 0.]]

graph_all_array 
==>>
[[0. 1. 1. 1. 1.]
 [1. 0. 1. 1. 1.]
 [1. 1. 0. 1. 1.]
 [1. 1. 1. 0. 1.]
 [1. 1. 1. 1. 0.]]

中身を見ると、graphの正体は結合行列でした。
結合があれば"1" 結合がなければ"0" になっています。

networkxを使うと対称行列になってしまうのが少し不便かなと感じました(勘違いかもですが、、)

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?