小编FaC*_*fee的帖子

查找并计算网络中隔离和半隔离节点的数量

我正在与经历了许多破坏性事件的网络合作。因此,许多节点由于给定的事件而失败。因此,从左到右的图像之间存在过渡:

在此处输入图片说明

我的问题:如何找到断开连接的子图,即使它们只包含 1 个节点?我的目的是计算它们并渲染为失败,因为在我的研究中这适用于它们。半隔离节点是指隔离节点组,但彼此连接

我知道我可以找到这样的孤立节点:

def find_isolated_nodes(graph):
    """ returns a list of isolated nodes. """
    isolated = []
    for node in graph:
        if not graph[node]:
            isolated += node
    return isolated
Run Code Online (Sandbox Code Playgroud)

但是您将如何修改这些行,使它们也能找到孤立节点组,如右侧图片中突出显示的那些?

我的理论尝试

它看起来像这个问题被寻址的洪水填充算法,这说明这里。但是,我想知道如何可以简单地计算巨型组件中的节点数,然后从在第 2 阶段看起来仍处于活动状态的节点数中减去它。您将如何实现这一点?

python components count connectivity networkx

2
推荐指数
1
解决办法
2007
查看次数

Pandas:迭代地连接存储在数据帧字典中的列

假设我有一个pandas数据帧字典,其中键是0, 1, 2, ..., 999,而值是像这样的数据帧(test_df):

          A         B         C
0  1.438161 -0.210454 -1.983704
1 -0.283780 -0.371773  0.017580
2  0.552564 -0.610548  0.257276
3  1.931332  0.649179 -1.349062
4  1.656010 -1.373263  1.333079
5  0.944862 -0.657849  1.526811
Run Code Online (Sandbox Code Playgroud)

假设索引对您没有任何意义,并且您希望创建一个新的数据框,其中列AB连接:

mydf=pd.concat([test_df[0]['A'],test_df[0]['B']], axis=1, keys=['A','B'])

现在,我可以在for循环中使用这一行来迭代我的数据帧字典中的所有键吗?

如果没有,那么另一种方式是什么?结果将是一个包含两列AB/或6x1000行的数据框.因此,索引列会从去05999.

python dictionary for-loop dataframe pandas

2
推荐指数
1
解决办法
481
查看次数

Matplotlib:如何使用特定的十六进制颜色和特定标记进行绘图?

我需要生成一个绘图,其中一条线在Pigment Blue(hex= #333399)和o标记中绘制.

我知道我可以o通过调用以下方式用标记绘制蓝色线:

line1 = ax1.plot(x, myvalues,'bo-', label='My Blue values')

问题:如果我想保留标记并将颜色更改b#333399?,应如何更改线条?

python plot colors matplotlib markers

1
推荐指数
1
解决办法
5882
查看次数

Python:如何从列表中计算出min,max,median,1st和3rd四分位数?

假设我有一个像这样的列表:

mydict={10:[],20:[],30:[],40:[],50:[1],60:[],70:[1],80:[7, 2, 7, 2, 2, 7, 2],90:[5, 2, 2, 6, 2, 3, 1, 2, 1, 2],...}

我想计算:dict中每个列表的min,max,median,1st和3rd四分位数.我试着minmax第一,就像这样:

mins_mydict={k:min(v) for k,v in mydict.items()}

maxes_mydict={k:max(v) for k,v in mydict.items()}

但我得到这个错误:ValueError: min() arg is an empty sequence.同样的max.是因为我的一些名单是空的吗?

如何创建检查是否的异常len(list)=0

python dictionary max min

1
推荐指数
1
解决办法
705
查看次数

NetworkX:首先完整地绘制相同的图形,然后删除一些节点

假设我有一个带10节点的图,我想在以下情况下绘制它:

  1. 它完好无损
  2. 它删除了几个节点

如何确保第二个图与第一个图具有完全相同的位置?

我的尝试生成了两个以不同布局绘制的图形:

import networkx as nx
import matplotlib.pyplot as plt
%pylab inline

#Intact
G=nx.barabasi_albert_graph(10,3)
fig1=nx.draw_networkx(G)

#Two nodes are removed
e=[4,6]
G.remove_nodes_from(e)
plt.figure()
fig2=nx.draw_networkx(G)
Run Code Online (Sandbox Code Playgroud)

python matplotlib networkx

1
推荐指数
1
解决办法
661
查看次数

Networkx:所有生成树及其相关的总权重

给定一个像这样的简单无向网格网络:

import networkx as nx
from pylab import *
import matplotlib.pyplot as plt
%pylab inline

ncols=3
N=3 
G=nx.grid_2d_graph(N,N)
labels = dict( ((i,j), i + (N-1-j) * N ) for i, j in G.nodes() )
nx.relabel_nodes(G,labels,False)
inds=labels.keys()
vals=labels.values()
inds=[(N-j-1,N-i-1) for i,j in inds]
pos2=dict(zip(vals,inds))
nx.draw_networkx(G, pos=pos2, with_labels=True, node_size = 200, node_color='orange',font_size=10)
plt.axis('off')
plt.title('grid')
plt.show()
Run Code Online (Sandbox Code Playgroud)

考虑到每条边都有与其长度相对应的权重:

#Weights
from math import sqrt

weights = dict()
for source, target in G.edges():
    x1, y1 = pos2[source]
    x2, y2 = pos2[target]
    weights[(source, target)] = round((math.sqrt((x2-x1)**2 + …
Run Code Online (Sandbox Code Playgroud)

python minimum-spanning-tree spanning-tree networkx weighted-graph

1
推荐指数
1
解决办法
3405
查看次数

Python:一次遍历多个字典

从这个答案中我知道可以一次迭代两个不同的字典:

d1 = {'a':5, 'b':6, 'c': 3}
d2 = {'a':6, 'b':7, 'c': 4}
for (k1,v1), (k2,v2) in zip(d1.items(), d2.items()):
    print k1, v1
    print k2, v2
Run Code Online (Sandbox Code Playgroud)

但是如何将其有效地扩展到包含20个不同的字典的列表中,而这些字典恰巧具有相同的键?

mylist=[d1, d2, d3, ..., d20]
Run Code Online (Sandbox Code Playgroud)

python dictionary for-loop

1
推荐指数
1
解决办法
961
查看次数

Matplotlib:如何绘制两个直方图的差异?

假设您有以下数据集:

a=[1, 2, 8, 9, 5, 6, 8, 5, 8, 7, 9, 3, 4, 8, 9, 5, 6, 8, 5, 8, 7, 9, 10]
b=[1, 8, 4, 1, 2, 4, 2, 3, 1, 4, 2, 5, 9, 8, 6, 4, 7, 6, 1, 2, 2, 3, 10]
Run Code Online (Sandbox Code Playgroud)

并说你生成他们的直方图:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(1,2,figsize=(16, 8))

plt.subplot(121)
plot1=plt.hist(a, bins=[0,1,2,3,4,5,6,7,8,9,10],
normed=True,edgecolor='k',linewidth=1.0,color='blue')
plt.title("a")

plt.subplot(122)
plot2=plt.hist(b, bins=[0,1,2,3,4,5,6,7,8,9,10],
normed=True,edgecolor='k',linewidth=1.0,color='green')
plt.title("b")

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

你如何制作一个具有相同箱子的条形图和高度两个直方图之间的差异?

如果您这样做:

 diff=plt.bar([1,2,3,4,5,6,7,8,9,10], 
             height=(plot1[0]-plot2[0]), edgecolor='black', 
             linewidth=1.2, color='red',width = 1) 
 plt.title("a-b")
Run Code Online (Sandbox Code Playgroud)

x轴上的值不与箱对齐.如何解决这个问题? 在此输入图像描述

python matplotlib histogram bar-chart

1
推荐指数
1
解决办法
2569
查看次数

熊猫:用两列之一的值替换Nan

给定以下数据框df,其中df['B']=df['M1']+df['M2']

   A    M1   M2   B
   1    1    2    3
   1    2    NaN  NaN
   1    3    6    9
   1    4    8    12
   1    NaN  10   NaN
   1    6    12   18
Run Code Online (Sandbox Code Playgroud)

我希望NaNin列B等于in 的相应值,M1或者M2前提是后者不是NaN

   A    M1   M2   B
   1    1    2    3
   1    2    NaN  2
   1    3    6    9
   1    4    8    12
   1    NaN  10   10
   1    6    12   18
Run Code Online (Sandbox Code Playgroud)

建议使用以下答案

df.loc[df['B'].isnull(),'B'] = df['M1'],但此行的结构允许同时考虑 …

python nan dataframe pandas

1
推荐指数
1
解决办法
2077
查看次数

Python 3.6:使用另一个作为索引的值创建新的dict

在Python 3.6.3中,我有以下dict D1:

D1 = {0: array([1, 2, 3], dtype=int64), 1: array([0,4], dtype=int64)}
Run Code Online (Sandbox Code Playgroud)

数组中的每个值都是另一个dict的键的索引D2:

D2 = {'Jack': 1, 'Mike': 2, 'Tim': 3, 'Paul': 4, 'Tommy': 5}
Run Code Online (Sandbox Code Playgroud)

我正在尝试D3使用相同的键创建第三个dict,D1并且作为值D2对应于索引的键D1.values().

我的目标是:

D3 = {0: ['Mike','Tim','Paul'], 1: ['Jack','Tommy']}
Run Code Online (Sandbox Code Playgroud)

我的方法是局部的,因为我很难弄清楚如何告诉D3从中获取密钥D1和来自的值D2.我对此不太确定and.有任何想法吗?

D3 = {key:list(D1.values())[v] for key in D1.keys() and v in D2[v]}
Run Code Online (Sandbox Code Playgroud)

python dictionary numpy dictionary-comprehension

1
推荐指数
1
解决办法
105
查看次数

Python:openpyxl的列索引错误

我有两个要写入新xlsx文件的列表:

list1=[1,2,3,4]
list2=[A,B,C,D]
Run Code Online (Sandbox Code Playgroud)

我想list1转储到A列和list2B列:

COLUMN A     COLUMN B
1            A
2            B
3            C
4            D
Run Code Online (Sandbox Code Playgroud)

这是我的看法,但是会引发错误:ValueError: Invalid column index 0

from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.compat import range
from openpyxl.cell import get_column_letter
import os

wb = Workbook() 
newdir=r'C:\Users\MyName\Desktop'
os.chdir(newdir)
dest_filename = 'Trial.xlsx'
ws=wb.active
for r in range(1,5):
    for c in 'A':
       ws.cell(row=r,column=0).value=list1[r]
    for c in 'B':
       ws.cell(row=r,column=1).value=list2[r]
wb.save(filename = dest_filename)
Run Code Online (Sandbox Code Playgroud)

错误指向最后一行。怎么了

python for-loop xlsx file-writing openpyxl

-1
推荐指数
1
解决办法
2283
查看次数