首页 > 解决方案 > numpy.load 给出 ValueError: descr is not a valid dtype descriptor:

问题描述

npy在我的 C++ 程序中使用以下方法编写了一个文件cnpy

vector < double > vrmsd(max,99.9);
.
.
.
cnpy::npy_save(frmsd,&vrmsd,{nfeat},"w");

按照这里的例子。

但是当我尝试使用加载文件时numpy出现错误

y = np.load(frmsd)

ValueError: descr is not a valid dtype descriptor: '<?24'

下面我粘贴一个包含长度为 2hexdump -Cnpy文件的结果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

此问题也已发布到cnpygithub 站点。只是想知道是否有什么我可以做的numpy吗?谢谢。

标签: pythonc++numpy

解决方案


npy_save()根据您提供的示例中的参数格式,您有一个错误。

代替,

cnpy::npy_save(frmsd,&vrmsd,{nfeat},"w");

你要,

cnpy::npy_save(frmsd,&vrmsd[0],{nfeat},"w");

推荐阅读