我必须将System.Array
(类型为Single的1e09项)写入二进制文件。我当然可以使用.GetValue()
遍历数组并将每个Single打包成4字节结构,但这非常慢。
在这种情况下是否可以使用标准Python文件i / o?我尝试了somefile_write(some_systemarray)
,但这会导致错误消息。
我主要对一维数组感兴趣,但是对于nD数组有用的答案将受到高度赞赏。
编辑阅读完第一条评论后,我尝试了以下代码:
from System import *
from System.IO import *
arr = Array.CreateInstance(Single, 1e8)
b = BinaryWriter(File.Open('test.bin', FileMode.Create))
for i in arr :
b.Write(i)
b.Close()
不幸的是,这需要一点点。 45秒有BinaryWriter.Write(Byte[])
可用。但是,只有在可以快速将System.Array
转换为Byte[]
时,这才能加快速度。
答案 0 :(得分:0)
您是否尝试过创建Byte数组而不是Single?
数组?from System import *
from System.IO import *
arr = Array.CreateInstance(Byte, 1e8)
b = BinaryWriter(File.Open('test.bin', FileMode.Create))
b.Write(arr)
b.Close()