我想从数据集中移动,就像这样
AAPL GOOGL FB PG
AAPL 50 5 6 30
GOOGL 120 10 12 30
FB 5 6 1 4
PG 30 30 4 40
到边缘列表,如果矩阵中的值满足某些特定条件
但我的数据集相当大,矩阵约。 3500x3500。因此代码变得超级耗费内存。
r = [[50, 5, 6, 0],[120, 10, 12, 30],[5, 6, 1, 4],[0, 30, 4, 40]]
ind = ['AAPL', 'GOOGL', 'FB', 'PG']
df1 = pd.DataFrame(r, columns=ind)
df1.index = ind
G = nx.Graph()
l = list(df1)
for item_v in l:
for item_h in l:
if (l.index(item_v) < l.index(item_h)) and (1 - cosine(df1[item_v], df1[item_h]) > 0.01):
G.add_edge(item_h, item_v)
也许它可以更有效率?(例如,如果我手动计算余弦等)。