GraphBLAS_01_图的稀疏表示
python直接安装python -m pip install python-graphblas1 邻接矩阵表示图假设有如下0123个节点的有向图可以用邻接矩阵表示沿行读取是出边沿列读取是入边沿行例如node 2出边到node0, node3沿列例如node 3, 可以看到有3个1则入度为3分别来自节点123importnumpyasnp Anp.array([[0,1,1,0],[1,1,0,1],[1,0,0,1],[0,0,1,1]],dtypenp.int32)虽然邻接矩阵概念上很好但用二维稠密数组就是每个数存储极其低效例如100 万用户社交关注关系图平均每人关注 100 人的场景下2 稀疏存储表示图实际上就是只记录不为0的坐标和值graphblas内部的计算基于稀疏数据结构但是用哪种结构由框架智能选择。2.1 COO/CSR/CSC计算的时候从COO格式构造内部计算都是用的CSR没有必要显示指定框架内部智能决定用什么数据结构importgraphblasasgb# COO 三元组row[0,0,1,1,1,2,2,3,3]col[1,2,0,1,3,0,3,2,3]val[1]*9# 构建矩阵默认 CSRAgb.Matrix.from_coo(row,col,val,nrows4,ncols4)# Matrix 4x4, int64, 9 entries# 默认就是 CSR 格式print(A)显示查看COO, CSR,CSC的储存细节CSC用的是按照列进行索引来记录非0坐标importnumpyasnpfromscipy.sparseimportcoo_matrix,csr_matrix# 1. 准备 COO 格式的数据rownp.array([0,0,1,1,1,2,2,3,3])colnp.array([1,2,0,1,3,0,3,2,3])datanp.array([1,1,1,1,1,1,1,1,1])# 2. 构建 COO 矩阵构建阶段coocoo_matrix((data,(row,col)),shape(4,4))# 3. 转换为 CSR 格式计算阶段这会自动完成压缩csrcoo.tocsr()# 查看结果print(csr.toarray())# 输出: [[0 1 0] [0 0 1] [0 0 0]]print(csr.indptr)# 输出: [0 2 5 7 9] (行索引被压缩了)print(csr.indices)# 输出: [1 2 0 1 3 0 3 2 3]print(csr.data)# 输出: [1 1 1 1 1 1 1 1 1]#4. 转换为 CSC 格式计算阶段这会自动完成压缩csccoo.tocsc()print(csc.toarray())print(csc.indptr)# 输出: [0 2 4 6 9] (列索引被压缩了)print(csc.indices)# 输出: [1 2 0 1 0 3 1 2 3]print(csc.data)# 输出: [1 1 1 1 1 1 1 1 1]2.2 3种表达方式说明2.3 和稠密的规模对比场景100 万用户关注关系的场景平均每人关注 100 个人3 介于稀疏和稠密之间的bitmaprbitmapcbitmaprBitmap by Row按行位图存储是 python-graphblas 的 另一种内部存储格式SuiteSparse:GraphBLAS 7.0新引入的一种内部格式介于 CSR 和稠密矩阵之间专为半稠密场景优化。比如CSR是存每行的列索引只存非零那 BitMapR:就是每行用 01 位图标记所有列“1” 的位置就是非零构造逻辑如下bitmapc和bitmapr逻辑一致只不过是按列。3.1 bitmapr和CSR对比BitMapR 的核心优势A[i, j]查询是 O(1)读位图CSR 要 O(log k) 二分查找。3.2 什么时候用 BitmapR条件推荐格式每行非零数 / ncols 10%CSR每行非零数 / ncols ≈ 20%~6%BitmapR每行非零数 / ncols 80%FullR稠密大量全空行HyperCSR

相关新闻

NAS硬盘选购与RAID阵列配置全指南

NAS硬盘选购与RAID阵列配置全指南

1. NAS硬盘选购的核心考量因素当我们需要为NAS系统选购硬盘时,不能简单地套用普通PC硬盘的选择标准。NAS作为24x7不间断运行的存储设备,对硬盘的可靠性、耐用性和性能稳定性有着更高的要求。以下是几个关键选购指标:1.1 转速与缓存的选择5400…

2026/10/26 19:43:00 阅读更多 →
AI工具提升学术写作效率:4款实用工具评测

AI工具提升学术写作效率:4款实用工具评测

1. 学术写作效率革命:4款AI工具深度评测去年帮导师审稿时,我发现近30%的投稿都带有明显的AI辅助痕迹。这促使我系统测试了市面上12款论文写作工具,最终筛选出4个真正能提升科研效率的利器。不同于常见的浮夸推荐,本文将基于三个月…

2026/10/24 2:57:11 阅读更多 →
OpenClaw开源AI助手框架本地部署指南

OpenClaw开源AI助手框架本地部署指南

1. OpenClaw项目概述OpenClaw是一个开源的AI助手框架,它允许开发者在本地环境中部署和定制自己的AI对话系统。这个框架特别适合需要私有化部署AI能力的企业或个人开发者,能够整合多种AI模型并通过统一接口提供服务。我第一次接触OpenClaw是在为一个客户构…

2026/10/26 22:52:35 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/26 5:00:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →