在最近的 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 float 组并将它们转换为类似的 native 数据结构。假设我们已经完成了 base64 解码并有一个字节数组,并且我们还知道 numpy 数据类型、维度和任何其他需要的元数据。
谢谢。
最佳答案
你真的应该看看OPeNDAP简化科学数据网络的各个方面。对于 Python,请查看 Pydap .
您可以通过 h5py 将 NumPy 数组直接存储为 HDF5 格式(或 NetCDF),然后使用 OPeNDAP 通过 HTTP 将数据流式传输到客户端。
关于python - 在 Python 之外读取 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2725602/