【发布时间】:2018-09-06 00:13:45
【问题描述】:
我在我的 C++ 程序中使用cnpy 编写了一个npy 文件:
vector < double > vrmsd(max,99.9);
.
.
.
cnpy::npy_save(frmsd,&vrmsd,{nfeat},"w");
以here为例。
但是当我尝试使用 numpy 加载文件时出现错误
y = np.load(frmsd)
ValueError: descr is not a valid dtype descriptor: '<?24'
下面我将hexdump -C 的结果粘贴到一个npy 文件中,该文件包含一个长度为2 的vector<double>(应该包含46.950、43.94):
00000000 93 4e 55 4d 50 59 01 00 46 00 7b 27 64 65 73 63 |.NUMPY..F.{'desc|
00000010 72 27 3a 20 27 3c 3f 32 34 27 2c 20 27 66 6f 72 |r': '<?24', 'for|
00000020 74 72 61 6e 5f 6f 72 64 65 72 27 3a 20 46 61 6c |tran_order': Fal|
00000030 73 65 2c 20 27 73 68 61 70 65 27 3a 20 28 32 2c |se, 'shape': (2,|
00000040 29 2c 20 7d 20 20 20 20 20 20 20 20 20 20 20 0a |), } .|
00000050 10 4d 1b 02 00 00 00 00 20 4d 1b 02 00 00 00 00 |.M...... M......|
00000060 20 4d 1b 02 00 00 00 00 00 ff 00 00 00 ff 00 00 | M..............|
00000070 c8 33 19 02 00 00 00 00 94 99 90 5b 00 00 00 00 |.3.........[....|
00000080
此问题也已发布到cnpy github 站点。只是想知道我是否可以在numpy 方面做些什么?谢谢。
【问题讨论】:
-
通过“我能做的事情”,您是否正在寻找一个 hacky 解决方法?
-
好吧,我不是在一个hacky解决方法之上!当然,如果我能让文件头符合 npy 标准,那将是最好的,但即使是 hack 也可能让我对正在发生的事情有所了解。
-
你能保存一个小得多的数组(比如 4x2),然后向我们展示保存文件的实际内容吗?向您展示如何处理它比编写一个示例要容易得多。
-
啊,是的。会做
-
能否请您告诉我如何显示二进制文件的内容(linux 或 mac OS)?