Ben süper süper hızlı olan bir nearest neighbors
bir şey yapmaya çalışıyorum. Şu anda, S = set(G.neighbors(node))
ve S = set(G.neighbors(node))
arasındaki tüm yineleme işlemlerini networkx
kullanıyorum, bu da iyi çalışıyor ancak indeksleme ve veri yapılarının avantajlarından faydalanmak istiyorum. Mümkün olduğunda yinelemekten uzaklaşmak isterim.np.where pd.DataFrame'de sıfır olmayan belirtiler sözlüğü için
Ben sonuçta anahtar root_node ve değer bir sözlük nesne ile yukarı bitirmek istiyorum düğüm (root_node dahil değil) komşuları
İşte benim grafiği ve DF_adj
komşuluk matrisi şu şekilde görünür bir dizi:
(array([ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
8, 9, 9, 10, 10]), array([ 0, 1, 3, 4, 5, 7, 0, 1, 2, 3, 4, 6, 8, 9, 10, 1, 2,
0, 1, 3, 0, 1, 4, 0, 5, 6, 1, 5, 6, 0, 7, 8, 1, 7,
8, 1, 9, 1, 10]))
: Ben
np.where(DF_adj == 1)
yaptığınızda
çıktı benziyor 2 diziler isedışarı bu İşaretli ancak tamamen Python pandas: select columns with all zero entries in dataframe
def neighbors(DF_adj):
D_node_neighbors = defaultdict(set)
DF_indexer = DF_adj.fillna(False).astype(bool) #Don't need this for my matrix but could be useful for non-binary matrices if someones needs it
for node in DF_adj.columns:
D_node_neighbors[node] = set(DF_adj.index[np.where(DF_adj[node] == 1)])
D_node_neighbors[node].remove(node)
return(D_node_neighbors)
nasıl çıktı bu tür almak için tüm pd.DataFrame
üzerinde np.where
kullanabilirsiniz bana yardım etmedi?
defaultdict(set,
{'a': {'b', 'd', 'e', 'f', 'h'},
'b': {'a', 'c', 'd', 'e', 'g', 'i', 'j', 'k'},
'c': {'b'},
'd': {'a', 'b'},
'e': {'a', 'b'},
'f': {'a', 'g'},
'g': {'b', 'f'},
'h': {'a', 'i'},
'i': {'b', 'h'},
'j': {'b'},
'k': {'b'}})
, 'np.where()' olacak dönüşü olmayan edemez Sen sözlük. – Goyo
Biliyorum, ancak daha sonra –