stdlib_io_npy 模块

npy 格式的描述取自 https://numpy.com.cn/doc/stable/reference/generated/numpy.lib.format.html

格式版本 1.0

前 6 个字节是魔数字符串:正好是 \x93NUMPY。

接下来的 1 个字节是无符号字节:文件格式的主版本号,例如 \x01。

接下来的 1 个字节是无符号字节:文件格式的次版本号,例如 \x00。注意:文件格式的版本与 numpy 包的版本无关。

接下来的 2 个字节形成一个小端无符号短整数:头部数据的长度 HEADER_LEN。

接下来的 HEADER_LEN 个字节形成描述数组格式的头部数据。它是一个 ASCII 字符串,包含字典的 Python 字面量表达式。它以换行符 (\n) 结束,并用空格 (\x20) 填充,以使 len(魔数字符串) + 2 + len(长度) + HEADER_LEN 的总和能够被 64 整除,以用于对齐目的。

字典包含三个键

  • “descr”:dtype.descr 可以作为参数传递给 numpy.dtype 构造函数以创建数组的 dtype 的对象。

  • “fortran_order”:bool 数组数据是 Fortran 连续的还是非 Fortran 连续的。由于 Fortran 连续数组是非 C 连续性的常见形式,因此为了效率起见,我们允许将其直接写入磁盘。

  • “shape”:int 元组 数组的形状。

为了可重复性和可读性,字典键按字母顺序排序。这仅仅是为了方便。编写器 SHOULD 尽可能实现这一点。读取器 MUST NOT 依赖于此。

头部之后是数组数据。如果 dtype 包含 Python 对象(即 dtype.hasobject 为 True),则数据是数组的 Python pickle。否则,数据是数组的连续(根据 fortran_order,C 连续或 Fortran 连续)字节。使用者可以通过将形状给出的元素数量(注意 shape=() 表示有一个元素)乘以 dtype.itemsize 来计算出字节数。

格式版本 2.0

版本 1.0 格式仅允许数组头部总大小为 65535 字节。具有大量列的结构化数组可能会超过此限制。版本 2.0 格式将头部大小扩展到 4 GiB。如果数据需要,numpy.save 将自动以 2.0 格式保存,否则它将始终使用更兼容的 1.0 格式。

因此,头部第四个元素的描述已变为:“接下来的 4 个字节形成一个小端无符号整数:头部数据的长度 HEADER_LEN。”

格式版本 3.0

此版本用 utf8 编码的字符串替换 ASCII 字符串(实际上是 latin1),因此支持具有任何 Unicode 字段名的结构化类型。


用途


接口

公共接口 load_npy

加载 npy 格式的多维数组 (规范)

  • 私有模块子程序 load_npy_cdp_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    复数(kind=dp), intent(out), 可分配 :: array(:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_cdp_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    复数(kind=dp), intent(out), 可分配 :: array(:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_cdp_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    复数(kind=dp), intent(out), 可分配 :: array(:,:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_csp_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    复数(kind=sp), intent(out), 可分配 :: array(:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_csp_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    复数(kind=sp), intent(out), 可分配 :: array(:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_csp_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    复数(kind=sp), intent(out), 可分配 :: array(:,:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint16_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int16), intent(out), 可分配 :: array(:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint16_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int16), intent(out), 可分配 :: array(:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint16_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int16), intent(out), 可分配 :: array(:,:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint32_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int32), intent(out), 可分配 :: array(:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint32_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int32), intent(out), 可分配 :: array(:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint32_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int32), intent(out), 可分配 :: array(:,:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint64_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int64), intent(out), 可分配 :: array(:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint64_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int64), intent(out), 可分配 :: array(:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint64_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int64), intent(out), 可分配 :: array(:,:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint8_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int8), intent(out), 可分配 :: array(:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint8_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int8), intent(out), 可分配 :: array(:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_iint8_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    整数(kind=int8), intent(out), 可分配 :: array(:,:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_rdp_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    实数(kind=dp), intent(out), 可分配 :: array(:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_rdp_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    实数(kind=dp), intent(out), 可分配 :: array(:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_rdp_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    实数(kind=dp), intent(out), 可分配 :: array(:,:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_rsp_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    实数(kind=sp), intent(out), 可分配 :: array(:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_rsp_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    实数(kind=sp), intent(out), 可分配 :: array(:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 load_npy_rsp_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    实数(kind=sp), intent(out), 可分配 :: array(:,:,:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg

公共接口 save_npy

以 npy 格式保存多维数组 (规范)

  • 私有模块子程序 save_npy_cdp_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    字符(len=*), intent(in) :: filename
    复数(kind=dp), intent(in) :: array(:)
    整数, intent(out), 可选 :: iostat
    字符(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_cdp_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    complex(kind=dp), intent(in) :: array(:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_cdp_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    complex(kind=dp), intent(in) :: array(:,:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_csp_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    complex(kind=sp), intent(in) :: array(:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_csp_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    complex(kind=sp), intent(in) :: array(:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_csp_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    complex(kind=sp), intent(in) :: array(:,:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint16_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int16), intent(in) :: array(:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint16_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int16), intent(in) :: array(:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint16_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int16), intent(in) :: array(:,:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint32_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int32), intent(in) :: array(:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint32_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int32), intent(in) :: array(:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint32_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int32), intent(in) :: array(:,:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint64_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int64), intent(in) :: array(:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint64_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int64), intent(in) :: array(:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint64_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int64), intent(in) :: array(:,:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint8_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int8), intent(in) :: array(:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint8_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int8), intent(in) :: array(:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_iint8_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    integer(kind=int8), intent(in) :: array(:,:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_rdp_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    real(kind=dp), intent(in) :: array(:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_rdp_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    real(kind=dp), intent(in) :: array(:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_rdp_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    real(kind=dp), intent(in) :: array(:,:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_rsp_1(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    real(kind=sp), intent(in) :: array(:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_rsp_2(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    real(kind=sp), intent(in) :: array(:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg
  • 私有模块子程序 save_npy_rsp_3(filename, array, iostat, iomsg)

    参数

    类型 意图可选 属性 名称
    character(len=*), intent(in) :: filename
    real(kind=sp), intent(in) :: array(:,:,:)
    integer, intent(out), 可选 :: iostat
    character(len=:), intent(out), 可选, 可分配 :: iomsg