關鍵是找好節點與位置的對應關係!同時考慮好矩陣一行的計算m[1]與一列m[:,1]的寫法
import networkx as nx
import numpy as np
from matplotlib import pyplot as plt
def nodedegree(g
): #計算有向圖出度中心性及無向圖的度中心性
n=list(g
.nodes()
)m= nx.
to_numpy_matrix(g
, nodelist=
n) #計算矩陣行:np.
sum(m[
1])與列:np.
sum(m[
:,1])
d=for i inn:
t=n.
index
(i) #返回節點i在列表中的位置,對應矩陣中元素
d[i]
=(np.
sum(
m[t]))
/(len(n)
-1) #度中心性計算方法是度除節點數-
1return d
if __name__ ==
"__main__":g
=nx.
digraph()
with
open
('e:\\kt\\kkkk.txt'
)as f: #資料集根據位置取
# n, m = f.
readline()
.split()
for line in f:
u, v =
map(int, line.
split()
)try:g
[u][v]
['weight']+=
1 except:g.
add_edge
(u,v, weight=1)
print
(nodedegree(g
))# pos = nx.
spring_layout(g
) # 此語句可以不要,圖形固定,否則會變化
# nx.
draw(g
, pos, node_color=
'r', node_size=
400, with_labels=true, alpha=
0.9)
# plt.
show(g
)
資料集樣式1 21 3
1 42 4
3 94 9
2 99 1
一種使用Python計算可達矩陣的簡單方法
在進行編碼前要簡單介紹幾個知識點 有向圖,鄰接矩陣,可達矩陣 現實中常常會表示從乙個地點到另乙個地點的路徑,這樣的帶有從起點到終點的路線表示可以用有向圖表示。如下圖所示 在該圖中,可以看成由地點f1到f2,以及f1到f3,f3到f2的路徑。這種有向圖也表示兩個因素的相互影響關係,再結合上面的有向圖,...
一種計算留存的思路
在一些統計系統中,為了觀察使用者的粘度,我們會計算一系列的叫做留存的指標 次日註冊留存 2日註冊留存.n日註冊留存,比如昨天註冊了1000名使用者中,在今天有300名使用者又登入了,那麼對應於昨天的註冊留存就是30 如果再去細究,還可以去計算活躍使用者的留存情況,比如昨天登入的1000名使用者中,在...
換一種方式計算人生
人的一生到底有多長?這常常被人們當作數學題來計算,並且作為智者的名言,用於教導人們珍惜光陰。人生的計算結果,古今中外各個不同,然而計算方法卻大同小異。無非是把整體的人生進行一系列的減法,然後得出 人生淨差 並以此為結果告訴人們人生之短。以美國 讀者文摘 所刊載的乙個人生算式為例 一生以60歲為標準,...