当前位置: 首页 > news >正文

numpy用savez_compressed压缩数据

[1] 展示了用 scipy.io.savemat 压缩数据的写法,且在压缩二进制数据时优于 numpy.packbits。其实 numpy.savez_compressed 也能压缩,本文记录用之存压缩数据的写法,并比较其与 numpy.save 和 scipy.io.savemat 压缩效果。

用到 TotalSegmentator[2] 的数据,一些预处理见 [3]。

Code

import os, os.path as osp
import numpy as np
import scipy.io as sio
import nibabel as nibP = "totalsegmentator/data"# nibabel 读 .nii.gz
img = nib.load(osp.join(P, "s0000", "ct.nii.gz"))
print(img.shape) # (294, 192, 179)
lab = nib.load(osp.join(P, "s0000", "comb_label.nii.gz"))
print(lab.shape) # (294, 192, 179)
# 转为 numpy 数组
img_np = img.get_fdata().astype(np.float32)
lab_np = (lab.get_fdata() > 0.5).astype(np.uint8)# numpy.save
np.save("img_np", img_np)
np.save("lab_np", lab_np)# numpy.savez_compressed
np.savez_compressed("img", img=img_np)
np.savez_compressed("lab", lab=lab_np)
np.savez_compressed("img_lab", img=img_np, lab=lab_np)# scipy.io.savemat + do_compression
sio.savemat("img.mat", {"img": img_np}, do_compression=True)
sio.savemat("lab.mat", {"lab": lab_np}, do_compression=True)
sio.savemat("img_lab.mat", {"img": img_np, "lab": lab_np}, do_compression=True)

然后 ls -lh 查看各文件大小:

-rw-r--r--    1 itom Research  39M Jun 17 10:11 img_np.npy
-rw-r--r--    1 itom Research 9.7M Jun 17 10:11 lab_np.npy-rw-r--r--    1 itom Research  13M Jun 17 10:11 img.npz
-rw-r--r--    1 itom Research 101K Jun 17 10:11 lab.npz
-rw-r--r--    1 itom Research  13M Jun 17 10:11 img_lab.npz-rw-r--r--    1 itom Research  13M Jun 17 10:11 img.mat
-rw-r--r--    1 itom Research 101K Jun 17 10:11 lab.mat
-rw-r--r--    1 itom Research  13M Jun 17 10:11 img_lab.mat

结论:numpy.savez_compressed 与 scipy.io.savemat 压缩效果一样。

References

  1. 压缩二进制numpy数据
  2. wasserth/TotalSegmentator
  3. iTomxy/data/totalsegmentator

相关文章:

  • 比较日志性能:Glog、Spdlog 和 ofstream 在不同硬件上的表现(推荐Spdlog)
  • 新服务器常见设置
  • 【diffusers 极速入门(二)】如何得到扩散去噪的中间结果?Pipeline callbacks 管道回调函数
  • 移植案例与原理 - HDF驱动框架-驱动配置(2)
  • Linux常用操作大全(下)
  • Google 广告VS Facebook广告:哪个更适合我?2024全维度区别详解
  • 中国500米分辨率年平均LAI数据集(2000-2020)
  • PLC模拟量和数字量到底有什么区别?
  • 【Liunx】基础开发工具的使用介绍-- yum / vim / gcc / gdb / make
  • Vue CLI,Vue Router,Vuex
  • 浅谈疫情后IT业的挑战和机会
  • 【计算机网络体系结构】计算机网络体系结构实验-DNS模拟器实验
  • 第四篇:精通Docker构建:Dockerfile的艺术与策略
  • springboot mybatis mysql新增后返回id(ai生成)
  • 【宠粉赠书】科技图表绘制:R语言数据可视化
  • 《剑指offer》分解让复杂问题更简单
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • HTTP--网络协议分层,http历史(二)
  • k个最大的数及变种小结
  • vue脚手架vue-cli
  • 电商搜索引擎的架构设计和性能优化
  • 订阅Forge Viewer所有的事件
  • 多线程 start 和 run 方法到底有什么区别?
  • 后端_MYSQL
  • 使用 Docker 部署 Spring Boot项目
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 移动端高清、多屏适配方案
  • ​​​【收录 Hello 算法】9.4 小结
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​queue --- 一个同步的队列类​
  • #pragma once
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (07)Hive——窗口函数详解
  • (11)iptables-仅开放指定ip访问指定端口
  • (52)只出现一次的数字III
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (Matlab)使用竞争神经网络实现数据聚类
  • (多级缓存)缓存同步
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (南京观海微电子)——COF介绍
  • (三)模仿学习-Action数据的模仿
  • (五)关系数据库标准语言SQL
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)EXC_BREAKPOINT僵尸错误
  • (转载)CentOS查看系统信息|CentOS查看命令
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET BackgroundWorker
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容