首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中最有效的图形数据结构是什么?

Python中最有效的图形数据结构是什么?

提问于 2018-03-13 19:36:57
回答 2关注 0查看 277

我需要能够在python中操作大型(10 ^ 7节点)图。与每个节点/边对应的数据是最小的,例如少量的字符串。就内存和速度而言,最有效的方法是什么?

字典更灵活,实现起来更简单,但我直观地期望列表的列表更快。列表选项还要求我将数据与结构保持分开,而字典允许这样的事情:

代码语言:javascript
运行
AI代码解释
复制
graph[I][J]["Property"]="value"

回答 2

jeeker

回答已采纳

发布于 2018-03-14 04:18:16

我强烈建议你NetworkX...。这是经过测试的,也是大多数“研究”类型在需要分析基于网络的数据时所使用的第一个工具。我在笔记本电脑上操作了100个数千边的图形,没有问题。它的功能丰富,非常容易使用。您会发现自己更多地关注眼前的问题,而不是底层实现中的细节。

例ERD-Rényi随机图生成与分析

代码语言:txt
AI代码解释
复制
"""
Create an G{n,m} random graph with n nodes and m edges
and report some properties.

This graph is sometimes called the Erd##[m~Qs-Rényi graph
but is different from G{n,p} or binomial_graph which is also
sometimes called the Erd##[m~Qs-Rényi graph.
"""
__author__ = """Aric Hagberg (hagberg@lanl.gov)"""
__credits__ = """"""
#    Copyright (C) 2004-2006 by 
#    Aric Hagberg 
#    Dan Schult 
#    Pieter Swart 
#    Distributed under the terms of the GNU Lesser General Public License
#    http://www.gnu.org/copyleft/lesser.html

from networkx import *
import sys

n=10 # 10 nodes
m=20 # 20 edges

G=gnm_random_graph(n,m)

# some properties
print "node degree clustering"
for v in nodes(G):
    print v,degree(G,v),clustering(G,v)

# print the adjacency list to terminal 
write_adjlist(G,sys.stdout)

可视化也很简单:

二次

二次

炳洪x5

发布于 2018-03-14 04:45:25

尽管这个问题现在已经很老了,但我认为值得提及我自己的python模块,用于进行图形操作。由于数据结构和算法是用C++实现的,采用模板元编程,使用Boost图库,因此效率很高。因此,它的性能(在内存使用和运行时)都可以与纯C++库相媲美,并且可以比典型的python代码好几个数量级,而不牺牲易用性。我经常用它来处理非常大的图表。

和开发者交流更多问题细节吧,去 写回答
相关文章
Python 中最快的循环姿势
大家好,我是 somenzz,今天我们来研究一下 Python 中最快的循环方法。
somenzz
2021/11/04
7130
数据结构算法操作试题(C++/Python)——有效的括号
leetcode 链接:https://leetcode-cn.com/problems/valid-parentheses/submissions/
莫斯
2020/09/10
2820
数据结构算法操作试题(C++/Python)——有效的括号
数据结构003:有效的数独
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
艰默
2022/12/12
4390
数据结构003:有效的数独
数据结构003:有效的数独
根据题目的规则,数独需要满足三个规则,针对规则一和二可知,我们在遍历每个元素的时候,需要判断该元素所在行和列中是否出现过,即可判断该元素是否满足规则一和二,因此我们可以针对每一行、每一列出现元素的次数作为校验标准,例如声明两个二维数组row[9][9] 和col[9][9] 分别代表行和列上面0-9 出现的次数。例如row[1][2] 表示第1行中,出现2的次数,col[4][3] 表示第4列出现3的次数(都是从第0行/列开始算的)。对于数独数组第i 行j 列上的数值n=board[i][j] ,首先将row[i][n] 上对应的值加一,再将col[j][n] 也加一,然后判断row[i][n] 和row[i][n] 的值是否大于1,大于1则表明i 行或者j 列数字n 出现的次数大于1,即不唯一。不满足规则一或者二。
艰默
2022/12/11
8080
数据结构003:有效的数独
Python 中最快的循环方式
大家好,我是 somenzz,今天我们来研究一下 Python 中最快的循环方式。
somenzz
2022/10/25
7690
Python 中最快的循环方式
数据结构算法操作试题(C++/Python)——有效的数独
leetcode 链接:https://leetcode-cn.com/problems/valid-sudoku/submissions/
莫斯
2020/09/10
3480
数据结构算法操作试题(C++/Python)——有效的数独
python获取数组中最多的元素
获取数组中数量最多的元素,也就是最频繁的那个元素,方法有很多,下面是3种最简单的:
周小董
2019/08/14
2.3K0
写代码过程中最忌讳的是什么?
代码只是编程思想的一种具体展示形式,程序员写代码有几个禁忌,不能写没有中心思想的代码,很多程序员写代码都是凭着感觉走,写到哪算哪,特别是初学者写代码的时候,不讲究策略觉得一边想着一边写着是一件特别有意思的事情,任何都需要有编程的指导思想指引,不能跟着感觉走,编程是一种理性行为不是肆意挥洒,优秀的程序代码一定是经过精心设计的,程序代码的调试不是推倒重来,而是在有中心的基础上进行修复。
程序员互动联盟
2018/09/29
1.3K0
写代码过程中最忌讳的是什么?
python 查找目录中最大的python文件 脚本
""" Find the largest Python source file in an entire directory tree. Search the Python source lib, use pprint to display results nicely. """ import sys, os, pprint trace = False if sys.platform.startswith('win'): dirname = r'C:\Python31\Lib'
用户5760343
2022/05/13
1.1K0
C++最好的图形库是什么?
世界上的GUI库多如牛毛,有的开源,有的收费,有的可以做手机app开发,有的可以做桌面应用,有的只能用在某个系统,有的支持跨平台。基于不同的编程语言,人们又开发出不同的图形框架,比如Java有AWT、Swing;C#有WinForm和WPF;C++有MFC、QT、wxWidgets等。在C++的库中,QT凭借对跨平台的支持、简单易用、开发效率高等特性,成为最受欢迎的GUI库之一。
Coding十日谈
2020/08/18
4.2K0
C++最好的图形库是什么?
数据结构算法操作试题(C++/Python)——最长有效括号
leetcode 链接:https://leetcode-cn.com/problems/longest-valid-parentheses/
莫斯
2020/09/09
3200
Python 中最简最好的设计模式
Python 诞生于1991年,而下一场技术革命已然开始,AI 时代已然成风。在 AI 领域中已经被广泛使用的 Python 必将成为下一个时代的第一开发语言!
py3study
2020/01/08
1.1K0
数据结构005:有效的字母异位词
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
艰默
2023/02/26
3010
数据结构005:有效的字母异位词
精益生产中最重要的工序是什么?
在精益生产中,最重要的工序是价值流分析。价值流分析是一种通过对生产过程的可视化和分析,找出生产中存在的浪费和瓶颈,以便优化整个生产流程的方法。价值流分析基于一种称为“价值流图”的工具,可以帮助企业了解生产流程、识别浪费和瓶颈,进而制定改进计划。
用户9972271
2023/04/17
2810
Python中最简单易用的并行加速技巧
我们在日常使用Python进行各种数据计算处理任务时,若想要获得明显的计算加速效果,最简单明了的方式就是想办法将默认运行在单个进程上的任务,扩展到使用多进程或多线程的方式执行。
派大星的数据屋
2022/05/18
1.3K0
Python中最简单易用的并行加速技巧
Java中最大的数据结构:LinkedHashMap了解一下?
Map 家族数量众多,其中 HashMap 和 ConcurrentHashMap 用的最多,而 LinkedHashMap 似乎则是不怎么用的,但是他却有着顺序。两种,一种是添加顺序,一种是访问顺序。
Java团长
2019/11/27
5440
影响FMEA有效应用的因素是什么?
在制造业和工业生产中,FMEA(潜在失效模式及后果分析)是一种常见的质量管理工具,用于识别和预防潜在的故障和缺陷。但是,想要有效的应用FMEA并非易事,这其中需要考虑多种因素,下面我们来详细了解一下。
用户9972271
2023/04/18
3440
【笔记】《计算机图形学》(12)——图形学的数据结构
之前我的笔记都是在OneNote上记录的,苦于OneNote羸弱的跨平台性,我决定抛弃OneNote,今后的笔记都用Markdown记录,方便迁移也方便调整格式。文章一开始编辑后会保存在我的Github仓库中(https://github.com/ZFhuang/Study-Notes),整理完后会发到公众号上,并延时同步到我的腾讯云。
ZifengHuang
2021/02/04
6.3K0
Python 中最黑魔法、最难懂的概念
最近在看一个开源框架的源码,其中大量使用了 metaclass 方法。这个概念非常抽象,本文我就以一个有趣实例,用更简洁和通畅的方式来理解它。
Ai学习的老章
2021/04/20
4420
Python 中最黑魔法、最难懂的概念
Python中最强大的错误重试库
我们在编写程序尤其是与网络请求相关的程序,如调用web接口、运行网络爬虫等任务时,经常会遇到一些偶然发生的请求失败的状况,这种时候如果我们仅仅简单的捕捉错误然后跳过对应任务,肯定是不严谨的,尤其是在网络爬虫中,会存在损失有价值数据的风险。
派大星的数据屋
2022/04/03
7080
Python中最强大的错误重试库

相似问题

2020-12-07:go中,slice的底层数据结构是什么?

0136

2020-11-25:go中,map的底层数据结构是什么?

0134

2020-01-17:java中,HashMap底层数据结构是什么?

0171

如何在Python中打印一个Tree数据结构?

2227

Python命名空间的解释是什么?

2374
相关问答用户
某公司 | 程序员擅长1个领域
腾讯云TDP | 先锋会员擅长2个领域
擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档