如何从Matrix Market下载矩阵并读取至变量(处理.gz压缩文件)
解决方案
直接通过内存字节流完成解压与矩阵读取,无需保存本地文件或手动解压,用Julia实现的步骤如下:
1. 安装依赖包
如果尚未安装所需包,先执行以下代码:
using Pkg Pkg.add(["HTTP", "MatrixMarket", "Zlib"])
2. 核心代码实现
using HTTP, MatrixMarket, Zlib # 目标矩阵文件的URL url = "https://math.nist.gov/pub/MatrixMarket2/Harwell-Boeing/bcsstruc1/bcsstk01.mtx.gz" # 获取压缩文件的字节流 response = HTTP.get(url) compressed_bytes = response.body # 内存中解压gzip格式数据 mtx_bytes = Zlib.decompress(compressed_bytes) # 将字节转为IO流,直接读取为矩阵 io_stream = IOBuffer(mtx_bytes) matrix = MatrixMarket.mmread(io_stream)
代码说明
HTTP.get(url):从目标URL获取压缩文件的原始字节数据,全程不落地到本地文件Zlib.decompress(compressed_bytes):直接在内存中完成gzip解压,得到mtx格式的原始内容IOBuffer(mtx_bytes):将解压后的字节数据包装为可读取的IO流,让MatrixMarket.mmread()直接读取并加载为矩阵变量
内容的提问来源于stack exchange,提问作者Chloe
相关产品推荐
相关产品推荐

