【发布时间】:2010-04-27 22:24:09
【问题描述】:
在最近的question 中,我询问了将大型 numpy 数组转换为分隔字符串的最快方法。我问的原因是因为我想把纯文本字符串传输给用其他编程语言编写的客户端(例如通过 HTTP)。显然,任何客户端程序都可以轻松使用分隔的数字字符串。但是,有人建议,由于字符串转换很慢,所以在 Python 端对数组进行 base64 编码并以二进制形式发送会更快。这确实更快。
我现在的问题是,(1) 我如何确保我编码的 numpy 数组能够很好地传输到不同操作系统和不同硬件上的客户端,以及 (2) 我如何在客户端解码二进制数据。
对于(1),我倾向于做如下的事情
import numpy as np
import base64
x = np.arange(100, dtype=np.float64)
base64.b64encode(x.tostring())
我还有什么需要做的吗?
对于 (2),我很乐意在任何编程语言中提供一个示例,其目标是获取浮点数的 numpy 数组并将它们转换为类似的本机数据结构。假设我们已经完成了 base64 解码并有一个字节数组,并且我们还知道 numpy dtype、维度和任何其他需要的元数据。
谢谢。
【问题讨论】:
-
您可以使用 .npy 格式和
numpy.save... 并将其作为二进制文件发送。您只需要在接收语言中实现一个简单的解析器。