[解決済み] 隣接ノードの属性に応じたネットワークXの平均隣接度を算出する。
2022-02-24 07:30:34
質問内容
私のグラフでは、ノードには属性があり、ノードのタイプは1か2であることがわかります。
G=nx.Graph()
G.add_node('N1',n_type=1)
G.add_node('N2',n_type=1)
G.add_node('N3',n_type=2)
G.add_edges_from([('N3','N1'),('N3','N2')])
NetworkXのnx.average_neighbor_degree(G)関数を使うと、以下のような結果が得られます。
{'N1': 2.0, 'N2': 2.0, 'N3': 1.0}
しかし、1種類のノードだけを考慮した平均近傍度を求めたい。例えば、属性が1の場合の平均近傍度は以下のようになるはずである。
{'N1': 0.0, 'N2': 0.0, 'N3': 1.0}
これは、ノードN3が属性n_type=1の隣人を持つ唯一のノードであり、その隣人の平均はDegree(N1)+Degree(N2)/2 = 1+1/2 = 1であることから
何か提案はありますか?
解決方法は?
ソースコードを確認し、少し手を加えて、このようにすることができました。参考になれば幸いです。
import networkx as nx
def get_average_nbr_deg_by_type(G, node_type):
avg = {}
for n, deg in G.degree:
nbrs_deg = [d for n, d in G.degree(G[n]) if G.nodes[n]['n_type'] == node_type]
deg = len(nbrs_deg)
if deg == 0:
deg = 1
avg[n] = sum(nbrs_deg) / float(deg)
return avg
get_average_nbr_deg_by_type(G, node_type=1)
# outputs {'N1': 0.0, 'N2': 0.0, 'N3': 1.0}
関連
-
ピロウズ画像色処理の具体的な活用方法
-
opencvとpillowを用いた顔認証システム(デモあり)
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
Python 入出力と高次代入の基礎知識
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】ティックラベルのテキストを変更する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
任意波形を生成してtxtで保存するためのPython実装
-
Python LeNetネットワークの説明とpytorchでの実装
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?