主要目的为了通过python读取大数组,然后保存再用C++来读取做处理。
python保存二进制文件的测试
创建三维数组(测试C的float的是32位的,python应该是64的)
import numpy as np
a=np.array([[[1.1,2,3,4],[5,6,7,8],[9,10,11,12]],[[13,14,15,16],[17,18,19,20],[21,22,23,24]]]).astype('float32')
保存数据
with open('./data.txt','wb') as f:
f.write(a)
文件需要后缀,否则可能会报错
PermissionError: [Errno 13] Permission denied: './data'
读取和保存大数组
我的数组。。
保存报错:
ValueError: ndarray is not C-contiguous
解决方法
filedata=np.ascontiguousarray(data1)
因为data和前面的a都是ndarray,所以并不是数据类型的问题。根据报错说数组不连续,原因很简单,然而网上找了半天才找到解决办法:python数据分为行连续和列连续或者都不连续,指的是数据在内存的存储是否连续,np.ascontiguousarray()可以把不连续的变成连续的,之后就可以写入了。是否连续可通过np.flags查看。
参考链接:https://zhuanlan.zhihu.com/p/59767914