小编vur*_*mux的帖子

如何增加networkx.spring_layout的节点间距

绘制一个集团图

import networkx as nx
....
nx.draw(G, layout=nx.spring_layout(G))
Run Code Online (Sandbox Code Playgroud)

产生如下图:

在此输入图像描述

显然,需要增加节点之间的间隔(例如,边缘长度).我用谷歌搜索了这个,并在这里找到了这个建议:

对于某些布局算法,存在可能有帮助的"缩放"参数.例如

1中:将networkx导入为nx

2:G = nx.path_graph(4)

在[3]中:pos = nx.spring_layout(G)#default to scale = 1

在[4]中:nx.draw(G,pos)

在[5]中:pos = nx.spring_layout(G,scale = 2)#所有节点之间的双倍距离

在[6]中:nx.draw(G,pos)

但是,该scale参数似乎没有任何影响.

获得更好绘图的正确方法是什么?

python graph graph-drawing networkx

28
推荐指数
3
解决办法
2万
查看次数

numpy.cos在某些数字上的工作时间明显更长

TLDR:

numpy.cos()在特定数字上(例如24000.0),其工作时间延长了30%。加一个小增量(+0.01)可使numpy.cos()照常工作。

我不知道为什么。


在与一起工作时,我偶然发现了一个奇怪的问题numpy。我正在检查缓存工作,并意外制作了错误的图形- numpy.cos(X)时间取决于时间X。这是我修改后的代码(从我的Jupyter笔记本复制):

import numpy as np
import timeit
st = 'import numpy as np'
cmp = []
cmp_list = []
left = 0
right = 50000
step = 1000
# Loop for additional average smoothing
for _ in range(10):
    cmp_list = []
    # Calculate np.cos depending on its argument
    for i in range(left, right, step):
        s=(timeit.timeit('np.cos({})'.format(i), number=15000, setup=st))
        cmp_list.append(int(s*1000)/1000)
    cmp.append(cmp_list)

# Calculate average times
av=[np.average([cmp[i][j] for i in range(len(cmp))]) …
Run Code Online (Sandbox Code Playgroud)

python benchmarking numpy

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

如何改善网络图的可视化?

我试图在python中使用networkx将相邻矩阵转换为图形。我的“加权”图大约有8000个节点和14000条边。是否有很棒的布局图或其他软件包,工具可以使我的图变得更漂亮?我希望结果是边缘权重越高,节点越近。这样我就可以分析群集节点。

我已经尝试了networkx文档中提供的所有布局。我也尝试使用gephi,但仍然对我的理想不满意。这是在networkx中的外观。它可以显示所有群集,但是对于患有强烈恐惧症的人来说,这看起来有点可怕:

在此处输入图片说明

这是我用来绘制图形的代码:

G = nx.Graph()
for i in range(10000):
    for j in range(10000):
        if mat[i][j] > 10:
            G.add_edge(a[i], a[j], weight=mat[i][j])
pos = nx.nx_pydot.graphviz_layout(G)
plt.figure(figsize=(8, 8))
plt.axis('off')
nx.draw_networkx(G, pos=pos, with_labels=False, node_size=25, edgecolors='black', edge_color='b')
plt.show()
Run Code Online (Sandbox Code Playgroud)

python social-networking networkx graph-visualization

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

使用 numpy 网格绘制二维等值线图的最佳方法

我正在寻找使用 numpy 网格创建等高线图的最佳方法。

我的列中有 Excel 数据,简单如下所示:

x data values: -3, -2, -1, 0, 1, 2 ,3, -3, -2, -1, 0, 1, 2, 3
y data values:  1,  1,  1, 1, 1, 1, 1,  2,  2,  2, 2, 2, 2, 2
z data values:  7 , 5,  6, 5, 1, 0, 9,  5,  3,  8, 3, 1, 0, 4
Run Code Online (Sandbox Code Playgroud)

x 和 y 值定义一个 2d 平面,其长度(x 轴)为 7 个值,深度(y 轴)为 2 个值。z 值定义相应点(或多或少是 z 轴)处的颜色。

我试过了:

import matplotlib.pyplot as plt
import numpy …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

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

Python bool 和 numpy bool_ 的行为究竟有何不同?

TLDR: is-comparison 适用于 Python bool,不适用于 numpy bool_。是否存在其他差异?


几天前,我遇到了布尔人的一种奇怪行为。当我尝试对这个 numpy 数组使用 is-comparison 时:

arr1 = np.array([1,0,2,0], dtype=bool)
arr1

Out[...]: array([ True, False,  True, False])
Run Code Online (Sandbox Code Playgroud)

(这些变量名是虚构的,与真实变量名或生产代码的任何相似之处纯属巧合)

我看到了这个结果:

arr1 is True

Out[...]: False
Run Code Online (Sandbox Code Playgroud)

这是合乎逻辑的,因为arr1它不是 True 或 False,它是 numpy 数组。我检查了这个:

arr1 == True

Out[...]: array([ True, False,  True, False])
Run Code Online (Sandbox Code Playgroud)

这按预期工作。我提到了这个可爱的行为并立即忘记了它。第二天,我检查了数组元素的真实性:

[elem is False for elem in arr1]

它返回给我这个!

Out[...]: [False, False, False, False]

我真的很困惑,因为我记得在 Python 数组中(我认为问题出在数组行为中):

arr2 = [True, False, True, False]
[elem is False for elem in arr2]
Run Code Online (Sandbox Code Playgroud)

有用: …

python numpy

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

无法使用剥离或替换删除前导\ n

我试图从以下文本中获取IP:Port:

{
  "supportsHttps": true,
  "protocol": "http",
  "ip": "149.28.159.132",
  "port": "8080",
  "get": true,
  "post": true,
  "cookies": true,
  "referer": true,
  "user-agent": true,
  "anonymityLevel": 1,
  "websites": {
    "example": true,
    "google": true,
    "amazon": false,
    "yelp": false,
    "google_maps": false
  },
  "country": "US",
  "unixTimestampMs": 1558097368515,
  "tsChecked": 1558097368,
  "unixTimestamp": 1558097368,
  "curl": "http://149.28.159.132:8080",
  "ipPort": "149.28.159.132:8080",
  "type": "http",
  "speed": 89.52,
  "otherProtocols": {},
  "verifiedSecondsAgo": 1249
}
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码:

def gimmeproxy():
    r=requests.get("https://gimmeproxy.com/api/getProxy?api_key=45785302-3264-4694-99e1-7c6628c90e6c&get=true&country=US&protocol=http&supportsHttps=true&user-agent=true&websites=google&anonymityLevel=1")
    contents=str(r.content)
    content=contents.split(',')
    IP=content[20]
    print(IP)

    #IP=IP.replace(':','')
    IP = IP.replace('"', '')
    IP = IP.replace(',', '')
    IP = IP.replace("\n", "")
    IP = IP.replace('ipPort', …
Run Code Online (Sandbox Code Playgroud)

python replace strip

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

如何将概率列表转换为二进制值

我有一个存储在 NumPy 数组中的 0 到 1 之间的概率列表。如何隐藏这些值,以便任何 >0.5 的值都变为 1,任何 <0.5 的值都变为 0?

我所拥有的基本上是:

    model = [0.123,0.789,0.456,0.654]  
Run Code Online (Sandbox Code Playgroud)

我想要的是:

    model = [0,1,0,1]
Run Code Online (Sandbox Code Playgroud)

这只是将整个数组更改为 1s,我也尝试过

我尝试过使用循环来做到这一点:

for i in range(len(model)):
if i<0.5:
    model[i]=0
elif i>0.5:
    model[i]=1
Run Code Online (Sandbox Code Playgroud)

这只是将整个数组更改为 1s,我也尝试过

i = 0
while i <len(model):
    if model[i] < 0.5:
        model[i] = 0
        i + 1
    elif model[i] >0.5:
        model[i] = 1
        i + 1
Run Code Online (Sandbox Code Playgroud)

但这也不起作用。

python numpy pandas

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

名称错误:名称“image_path”未定义

我读过 stackoverflow 问题,解决方案似乎是插入完整路径,但是这样做后它给了我名称错误。我正在使用 Windows 10 python 3.7.1

这是我的代码:

from sklearn.tree import export_graphviz


export_graphviz(
        tree_clf,
        out_file = image_path("C:/Users/my_name/Desktop/iris_tree.dot"),# path where you want it to output
        feature_names=iris.feature_names[2:],
        class_names = iris.target_names,
        rounded=True,
        filled=True
)
Run Code Online (Sandbox Code Playgroud)

python scikit-learn

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

如何使用 networkx 从 Twitter 数据构建图表

所以我是一个初学者,但我想可视化用户在 Python 中使用 networkx 的提及。我已经使用 Twitter API 收集了我想要查看的所有推文,并将它们放入数据框架中。数据框包含有关推文的各种数据,但我最感兴趣的是用户(DF 中的 5 个用户)以及用户的推文中提到了谁。

+-------+---------------------+
|user   |mentioned_user       |
+-------+---------------------+
|user1  |jack,peter,anne      |
|user2  |sophie               |
|user2  |anne,user1           |
+-------+---------------------+
Run Code Online (Sandbox Code Playgroud)

我意识到我可以使用 from_pandas_edgelist 提取我需要的数据,如下所示:

test = nx.from_pandas_edgelist(
    df,
    source='user',
    target='mentioned_user',
    edge_attr=True,
    create_using=nx.DiGraph()
)
Run Code Online (Sandbox Code Playgroud)

但接下来我该怎么办?我想为每个用户绘制一个图,其中 user 和 said_user 是节点。

任何帮助是极大的赞赏!

python twitter networkx

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

在 networkx 图上显示边权重

我有一个包含 3 列的数据框:f1、f2 和分数。我想绘制一个图形(使用 NetworkX)来显示节点(在 f1 和 f2 中)和边缘值作为“分数”。我能够用节点及其名称绘制图形。但是,我无法显示边缘分数。有人可以帮忙吗?

这是我到目前为止:

import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt


feature_1 = ['Boston', 'Boston', 'Chicago', 'ATX', 'NYC']
feature_2 = ['LA', 'SFO', 'LA', 'ATX', 'NJ']
score = ['1.00', '0.83', '0.34', '0.98', '0.89']

df = pd.DataFrame({'f1': feature_1, 'f2': feature_2, 'score': score})
print(df)

G = nx.from_pandas_edgelist(df=df, source='feature_1', target='feature_2', edge_attr='score')
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True)

#nx.draw_networkx_edge_labels(G, pos, edge_labels=labels)

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

python networkx

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