从http响应加载numpy数组而不保存文件

Gab*_*rco 7 python numpy

我有一堆包含 numpy 数组的文件在某个 url(例如,https://my_url/my_np_file.npy),我试图将它们加载到我的计算机中。

如果我手动下载文件,我可以使用np.load('file_path'). 如果我使用 url 响应(使用下面的代码),将内容保存到文件然后使用np.load(),它也可以工作。

response, content = http.request('https://my_url/my_np_file.npy')
Run Code Online (Sandbox Code Playgroud)

如果我尝试从内容字符串加载数组,则会收到以下错误。这可能是因为 将np.load字符串输入解释为文件的名称,而不是数据本身。

文件“/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py”,第 370 行,加载 fid = open(file, "rb") TypeError: file() 参数 1 必须是编码字符串没有空字节,不是 str

有没有办法加载数组而不必保存文件?

Luc*_*asB 9

您缺少io.BytesIO使字符串看起来像文件对象np.load

以下是您要查找的内容:

import requests
import io

response = requests.get('https://my_url/my_np_file.npy')
response.raise_for_status()
data = np.load(io.BytesIO(response.content))  # Works!
Run Code Online (Sandbox Code Playgroud)


Hyu*_*woo -1

您可以添加 HTTP 响应的示例吗?(从https://my_url/my_np_file.npy

np.fromstring也许您可以在检索网络响应后尝试。

这是上述参考文献中的示例。

>>> np.fromstring('1 2', dtype=int, sep=' ')
array([1, 2])
>>> np.fromstring('1, 2', dtype=int, sep=',')
array([1, 2])
Run Code Online (Sandbox Code Playgroud)