当前位置: 首页 > 面试题库 >

* .npy中数据的存储方式是什么?

柯骏
2023-03-14
问题内容

我正在使用numpy.save函数保存NumPy数组。我希望其他开发人员能够使用C语言从这些文件中读取数据。所以我需要知道numpy如何在file中组织二进制数据。确定,当我保存’i4’数组时很明显,但是包含某些结构的数组的数组又如何呢?在文档中找不到任何信息

UPD:可以说tha数据类似于:

dt = np.dtype([('outer','(3,)<i4'),('outer2',[('inner','(10,)<i4'),('inner2','f8')])])

UPD2:如何保存“动态”数据(dtype-对象)

import numpy as np
a = [0,0,0]
b = [0,0]
c = [a,b]
dtype = np.dtype([('Name', '|S2'), ('objValue', object)])
data = np.zeros(3, dtype)
data[0]['objValue'] = a
data[1]['objValue'] = b
data[2]['objValue'] = c
data[0]['Name'] = 'a'
data[1]['Name'] = 'b'
data[2]['Name'] = 'c'

np.save(r'D:\in.npy', data)

从C那里读那个东西真的吗?


问题答案:

npy文件格式记录在numpy的NEP
1中
-NumPy数组的简单文件格式。

例如,代码

>>> dt=numpy.dtype([('outer','(3,)<i4'),
...                 ('outer2',[('inner','(10,)<i4'),('inner2','f8')])])
>>> a=numpy.array([((1,2,3),((10,11,12,13,14,15,16,17,18,19),3.14)),
...                ((4,5,6),((-1,-2,-3,-4,-5,-6,-7,-8,-9,-20),6.28))],dt)
>>> numpy.save('1.npy', a)

结果在文件中:

93 4E 55 4D 50 59                      magic ("\x93NUMPY")
01                                     major version (1)
00                                     minor version (0)

96 00                                  HEADER_LEN (0x0096 = 150)
7B 27 64 65 73 63 72 27 
3A 20 5B 28 27 6F 75 74 
65 72 27 2C 20 27 3C 69 
34 27 2C 20 28 33 2C 29 
29 2C 20 28 27 6F 75 74 
65 72 32 27 2C 20 5B 28 
27 69 6E 6E 65 72 27 2C 
20 27 3C 69 34 27 2C 20 
28 31 30 2C 29 29 2C 20 
28 27 69 6E 6E 65 72 32                Header, describing the data structure
27 2C 20 27 3C 66 38 27                "{'descr': [('outer', '<i4', (3,)),
29 5D 29 5D 2C 20 27 66                            ('outer2', [
6F 72 74 72 61 6E 5F 6F                               ('inner', '<i4', (10,)), 
72 64 65 72 27 3A 20 46                               ('inner2', '<f8')]
61 6C 73 65 2C 20 27 73                            )],
68 61 70 65 27 3A 20 28                  'fortran_order': False,
32 2C 29 2C 20 7D 20 20                  'shape': (2,), }"
20 20 20 20 20 20 20 20 
20 20 20 20 20 0A

01 00 00 00 02 00 00 00 03 00 00 00    (1,2,3)
0A 00 00 00 0B 00 00 00 0C 00 00 00
0D 00 00 00 0E 00 00 00 0F 00 00 00
10 00 00 00 11 00 00 00 12 00 00 00
13 00 00 00                            (10,11,12,13,14,15,16,17,18,19)
1F 85 EB 51 B8 1E 09 40                3.14

04 00 00 00 05 00 00 00 06 00 00 00    (4,5,6)
FF FF FF FF FE FF FF FF FD FF FF FF
FC FF FF FF FB FF FF FF FA FF FF FF
F9 FF FF FF F8 FF FF FF F7 FF FF FF 
EC FF FF FF                            (-1,-2,-3,-4,-5,-6,-7,-8,-9,-20)
1F 85 EB 51 B8 1E 19 40                6.28


 类似资料:
  • 本文向大家介绍Python 存取npy格式数据实例,包括了Python 存取npy格式数据实例的使用技巧和注意事项,需要的朋友参考一下 数据处理的时候主要通过两个函数 (1):np.save(“test.npy”,数据结构) ----存数据 (2):data =np.load('test.npy") ----取数据 给2个例子如下(存列表) 1、 2、存字典 3、在存为字典格式读取后,需要先调用如

  • 问题内容: 您知道django密码的存储方式如下: 那就是“ hashtype $ salt $ hash”。我的问题是,他们如何获得$哈希?是将密码和salt组合在一起,然后进行哈希处理,还是完全其他? 问题答案: 与往常一样,使用源: 如我们所见,密码摘要是通过使用选定的哈希算法将盐和密码连接起来而制成的。然后,将算法名称,原始盐和密码哈希进行合并,并用“ $”分隔以构成摘要。 为了验证密码,

  • 我正在通过使用Laravel作为后端开发来创建一个电子商务移动应用程序。 方案:我有一个Product表,其中存储了有关产品的一些信息。每当用户购买一个产品,他将得到一个购买历史记录(它将显示产品信息)将被存储到数据库中。所以当卖家更新他们的产品信息时,用户购买历史记录的产品信息不会受到影响。 问题:如果我只是简单地创建一个用户的购买历史记录表来存储每个用户的记录,我认为这将在数据库中需要大量的空

  • 我正在使用java servlet编写一个简单的服务器。为了从数据库中获取数据,我编写了一个特殊的Dao层类,我想知道我应该在哪里存储SQL查询? 我需要创建一个特殊的类,将查询存储为最终字符串,还是有更有效的方法来实现?

  • 我正在根据下面显示的代码从数据库填充ListView,代码片段实现了CursorLoader。早些时候,出于同样的目的,我使用SimpleCrsorAdapter,但出于某些原因,我不得不改为ArrayAdapter。 数据库只有两列: _id(整数主键自动增量)和消息(字符串非空) ListView工作正常,但问题是listview中显示的字符串会自动按字母顺序排序,而不是按存储顺序排序。而我在

  • 我有一个游戏,在MySQL数据库中存储boss在简单模式和硬模式下的杀人记录。有14个老板。我想存储一个球员杀死一个老板的次数和难度。我有几个选择,我可以看到。。 为每个boss以及每个难度在表中创建一个单独的列。例如。 创建两个存储数字序列的字段,这些数字可以稍后提取出来,以便在PHP中进行比较。其中easykills是一个由28个字符组成的字符串,每2个字符就有一个计数器,用于计算boss被杀