我在C#中有一个2D锯齿状双数组,我将其转换为如下字节数组:
byte[][][] byteArray = new byte[10][][];
我以这种方式将字节数组保存为二进制文件:
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream(path, FileMode.Create, FileAccess.Write))
{
formatter.Serialize(stream, byteArray);
}
现在,我需要在python
中读取文件,以便在那里重新构建2D双数组......
我试图使用numpy.fromfile()
,并想知道应该如何做。
答案 0 :(得分:1)
据我所知,BinaryFormatter
和numpy.fromfile()
不是跨越平台,更不用说语言了。使用更加跨平台的格式(如JSON)会更容易。将double
转换为byte[]
的部分也可能存在问题,例如因为字节序。如果性能和数据要求不是真正的问题,那么就不容易使事情复杂化。
此示例使用Json.NET作为C#:
double[][] myArray = // whatever
var path = // whatever
using (StreamWriter file = File.CreateText(path))
{
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(file, myArray);
}
然后在Python中你需要做的就是:
import numpy
import json
path = # whatever
with open(path) as f:
myArray = numpy.array(json.load(f))
# we now have the array! e.g.
print(myArray.dtype) # float64
print(myArray[0][0]) # 0.79449418131