netCDF文件的scale_factor和add_offset

2023-11-06

我使用python的netCDF4读取数据,发现数据集存在scale_factor和add_offset,但是我读取的数据应该是Unpacking data,也就是转换后的实际数据,不需要再处理,因为数据压缩是通过偏移和缩放之后将浮点数转化为整数,为了验证正确性,我通过下列代码验证:

from netCDF4 import Dataset

filename = r'geopotential.nc'
data = Dataset(filename)
print(data['z'].set_auto_maskandscale(True)) # 设置缩放和掩膜数组开启,默认就是开启,这句话可省略
print(data['z'][:]) # data1

print(data['z'].set_auto_maskandscale(False)) # 设置缩放和掩膜数组关闭
print(data['z'][:]) # 关闭后打印数据,得出的数据全部为整数
#将关闭后的数据应用缩放和偏移转换
print(data['z'][:]*data['z'].scale_factor+data['z'].add_offset) # data2
# 可以发现关闭data1和data2完全一致

'''
思路应该是这样:
采集到原始数据,然后为了节省存储空间,保证存储的数据精度,采取以下策略转换数据;
min:整个数据集的最小值, max:整个数据集的最大值, n:转化为多少个二进制数的整数,取决于你数据的范围,我这个数据集是16进制度
def compute_scale_and_offset(min, max, n):
    # stretch/compress data to the available packed range
    scale_factor = (max - min) / (2 ** n - 1)
    # translate the range to be symmetric about zero
    add_offset = min + 2 ** (n - 1) * scale_factor
    return (scale_factor, add_offset)
'''
def compute_scale_and_offset(min, max, n):
    # stretch/compress data to the available packed range
    scale_factor = (max - min) / (2 ** n - 1)
    # translate the range to be symmetric about zero
    add_offset = min + 2 ** (n - 1) * scale_factor
    return (scale_factor, add_offset)
# 我调用上述函数计算了偏移和缩放值:
import numpy as np
print(compute_scale_and_offset(np.array(data['z'][:]).min(),np.array(data['z'][:]).max(),16))
#得到的结果和我读取的ERA5文件中的scale_factor, add_offset一致。

总之,使用netCDF模块读取的数据无须再进行处理。

ref:

[1] https://blog.csdn.net/BeautyGao/article/details/50608428?utm_source=blogxgwz5

[2] http://james.hiebert.name/blog/work/2015/04/18/NetCDF-Scale-Factors.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

netCDF文件的scale_factor和add_offset 的相关文章

  • 如何访问pandas数据框中的多级索引?

    我想用相同的索引来调用这些行 这是示例数据框 arrays np array bar bar baz baz foo foo qux qux np array one two one two one two one two df pd Da
  • openpyxl 2.4.2:保存后公式生成的单元格值为空

    我使用 openpyxl 打开文件 编辑一些单元格并保存更改 这是一个例子 import openpyxl book openpyxl load workbook sheet path sheet book active for row i
  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • Matplotlib 标准化颜色条 (Python)

    我正在尝试使用 matplotlib 当然还有 numpy 绘制轮廓图 它有效 它绘制了它应该绘制的内容 但不幸的是我无法设置颜色条范围 问题是我有很多图 并且需要所有图都具有相同的颜色条 相同的最小值和最大值 相同的颜色 我复制并粘贴了在
  • 打印 scrapy 请求的“响应”

    我正在尝试学习 scrapy 在遵循教程的同时 我正在尝试进行细微的调整 我想简单地从请求中获取响应内容 然后我会将响应传递到教程代码中 但我无法发出请求并获取响应内容 建议就好 from scrapy http import Respon
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • 如何将条目中的部分文本加粗并更改其背景颜色?

    我正在创建一个基于 Tkinter 的 GUI 它有一个 Entry 小部件 我想将其文本的一部分加粗并更改其背景颜色 但我不知道我该怎么做 如果我使用文本小部件 我可以只使用标签 但看起来它们不能与条目小部件一起使用 此代码使用文本小部件
  • python ttk treeview:如何选择并设置焦点在一行上?

    我有一个 ttk Treeview 小部件 其中包含一些数据行 如何设置焦点并选择 突出显示 指定项目 tree focus set 什么也没做 tree selection set 0 抱怨 尽管小部件明显填充了超过零个项目 但未找到项目
  • 当x轴不连续时如何删除冗余日期时间 pandas DatetimeIndex

    我想绘制一个 pandas 系列 其索引是无数的 DatatimeIndex 我的代码如下 import matplotlib dates as mdates index pd DatetimeIndex 2000 01 01 00 00
  • VSCode pytest 测试发现失败

    Pytest 测试发现失败 用户界面指出 Test discovery error please check the configuration settings for the tests 输出窗口显示 Test Discovery fa
  • 唯一的图像哈希值即使 EXIF 信息更新也不会改变

    我正在寻找一种方法来为 python 和 php 中的图像创建唯一的哈希值 我考虑过对原始文件使用 md5 和 因为它们可以快速生成 但是当我更新 EXIF 信息 有时时区关闭 时 它会更改总和 并且哈希也会更改 有没有其他方法可以为这些文
  • 字典的嵌套列表

    我正在尝试创建dict通过嵌套list groups Group1 A B Group2 C D L y x 0 for y in x if y x 0 for x in groups d k v for d in L for k v in
  • 我可以使用 dask 创建 multivariate_normal 矩阵吗?

    有点相关这个帖子 https stackoverflow com questions 52337612 random multivariate normal on a dask array 我正在尝试复制multivariate norma
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt
  • 使用 Keras 和 fit_generator 绘制 TensorBoard 分布和直方图

    我正在使用 Keras 使用 fit generator 函数训练 CNN 这似乎是一个已知问题 https github com fchollet keras issues 3358TensorBoard 在此设置中不显示直方图和分布 有
  • 从时间序列生成日期特征

    我有一个数据框 其中包含如下列 Date temp data holiday day 01 01 2000 10000 0 1 02 01 2000 0 1 2 03 01 2000 2000 0 3 30 01 2000 200 0 30

随机推荐

  • 波士顿房价预测——线性回归模型

    1 案例背景介绍 数据介绍 该数据是UCI ML房价数据集的副本 以下特征是专家得出的影响房价的结果属性 所以可以直接使用 但很多时候需要我们自己去量化特征找出需要的属性 2 处理流程 基本数据处理 数据很规整 没有需要特别处理的 我们确定
  • VPN的搭建与使用--CentOS7.9(OpenVpn环境配置)

    一 VPN概述 OpenVpn VPN是Virtual Private Network 虚拟私人网络 的缩写 它是一种通过公用网络建立安全 加密通信的技术 VPN的主要功能是创建一个虚拟的专用网络 使得用户可以在这个网络中访问外部网络资源
  • 谁说dubbo接口只能Java调用,我用Python也能轻松稿定

    由于公司使用基于Java语言的Dubbo技术栈 而本人对Python技术栈更为熟悉 为了使不懂JAVA代码的同学也能进行Dubbo接口层的测试 总结一个通过python实现dubbo接口调用的实现方案 01 实现原理 根据Dubbo官方文档
  • AI产业链的划分,主要可分为基础层、技术层和应用层

    基础层 基础层又分为数据层和计算能力 数据层像自身能够不断产生数据的Alphago一样 他会自己不断的产生数据和进化它的模型 计算能力就像我之前提到的硬件的加速 神经网络芯片这一类的计算能力提供商 也有做像GPU云计算的开放给创业公司 技术
  • 第二章 Java入门之Java程序初体验

    第二章 Java程序初体验 2 1 Java背景介绍 2 1 1 Java名称的由来 在最初 Java语言是叫做oak 橡树 是因为刚开始公司门口有一颗橡树 所以就叫做橡树 然后发现oak已经被美国橡树公司注册了 就不能再继续使用了 所以需
  • 常用的共识机制

    1 PoW Proof of Work 工作量证明机制 基本原理 这是比特币采用的共识机制 也是最早的 理解起来 很简单 就是 按劳取酬 你付出多少劳动 工作 就会获得多少报酬 比特币等加密货币 在网络世界里 这里的劳动就是你为网络提供的计
  • 将使用idea编写的项目分享到GIT上

    1 注册账户 登录gitee 登录成功后新建一个仓库 点击创建 2 安装git Windows版 Git官网地址 https git scm com downloads下载 具体安装步骤如下 鼠标右击桌面 看到这个Git GUI Here
  • ajax 跨站返回值,跨域AJAX解决方案

    由于浏览器存在同源策略机制 同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性 同源策略的判定规则 如果两个页面拥有相同的协议 端口 和主机 那么这两个页面就属于同一个源 图示例 同源策略判定 png 特别的 由于同源策
  • 常用ARM汇编指令

    空指令 nop nop 传输指令 MOV MOV R1 3 用c表示 r1 3 MOV R1 0X17 r1 0x17 MOV R0 R1 r0 r1 MVN R0 R1 将RO取反给R1 相当于r1 r0 建议赋值时候直接给16进制方便调
  • Python 自定义异常处理Error函数

    usr bin env python coding utf 8 CODEMSG 2000 u True 4000 u 客户上传的文件格式不正确 4010 u 客户上传的文件格式是要求格式以外的文件 4001 u 客户上传的文件列超过1024
  • 计算机二级wps知识点,计算机二级MS office和WPS office如何备考?

    计算机二级MS office和WPS office如何备考 首先IT考试网带大家看下它们的分值是如何设置的 具体来讲 就是单项选择题 20分 含公共基础知识部分10分 文字处理题 word 30分 电子表格题 excel 30分 演示文稿题
  • 有道网页翻译chrome插件---我用过的最好的翻译插件

    大家知道很多优秀计算机的资源和文章都是用英文写的 对于英文不好的人来说 看纯英文的文章会有点吃力 而且会有恐惧感 但是不看些英文的资料 无疑是对外界精彩的思想精华 前沿技术关上了一扇门 之前用过google的网页翻译 虽然很强大 可以翻译多
  • Android13 编译错误汇总

    1 error New setting keys are not allowed 一版是在Settings中添加了新的字段导致的 解决 在你的字段上面加上 SuppressLint NoSettingsProvider 继续编译应该会出现
  • vCloud Suite Deployment---vCloud 部署

    原文 A vCloud Suite environment combines multiple VMware products and allows you to build and operate software defined dat
  • Vue9--render和ref

    render Vue渲染组件的两种形式 1 先注册组件 在Vue实例中通过标签名引用 此时不会覆盖实例控制区域 2 注册组件 在Vue实例中通过render方法渲染 此时会覆盖实例控制区域 div dddsfsfgdsfggs div
  • 在线应用的 Serverless 实践

    作者 唐慧芬 黛忻 阿里云产品专家 导读 毫无疑问 Serverless 能够在效率和成本上给用户带来巨大收益 那具体到落地又应该怎么做呢 本文就给大家详细解读 Serverless 的落地实践 Serverless 落地企业级应用的挑战
  • XML外部实体漏洞(XXE)详解与编程

    XML外部实体漏洞 XXE 详解与编程 XML外部实体漏洞 XXE 是一种常见的网络安全漏洞 它允许攻击者通过操纵XML解析器来访问和读取服务器上的文件 甚至执行远程代码 本文将详细介绍XXE漏洞的原理和常见的攻击方式 并提供相应的源代码示
  • idea实现类快捷生成接口方法

    接口类 实现类 当我们实现了接口后 并没有像eclipse那样 鼠标放上去就会提示生成接口方法 鼠标定位到UserService类后面 快捷键 Alt Enter 选择Implement methods 选中点OK就自动生成了 还有一种方法
  • 《C++ Primer》读书笔记第十六章-1-定义模板

    笔记会持续更新 有错误的地方欢迎指正 谢谢 这一章特别实用 神器 gt 模板 泛型编程能处理在编译之前类型不知道的情况 在编译时获知类型 比如我们学过的容器 迭代器和算法都是泛型编程 模板是C 中泛型编程的基础 记住 一个模板就是一个创建类
  • netCDF文件的scale_factor和add_offset

    我使用python的netCDF4读取数据 发现数据集存在scale factor和add offset 但是我读取的数据应该是Unpacking data 也就是转换后的实际数据 不需要再处理 因为数据压缩是通过偏移和缩放之后将浮点数转化