2

我必须将System.Array(1e09 个单项类型的项目) 写入二进制文件。我当然可以用 Array 循环.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()

不幸的是,这需要appr。45 秒。有BinaryWriter.Write(Byte[])可用的。但是,这只会在可以快速转换System.ArrayByte[]加快速度。

4

1 回答 1

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()
于 2015-03-28T09:56:06.357 回答