Загрузка массива numpy из ответа http без сохранения файла - PullRequest
0 голосов
/ 19 октября 2018

У меня есть куча файлов, содержащих пустые массивы по некоторому URL (например, https://my_url/my_np_file.npy), и я пытаюсь загрузить их на свой компьютер.

Если я загружаю файл вручную, я могу правильно загрузитьмассив numpy с использованием np.load('file_path').Если я возьму ответ URL (используя приведенный ниже код), сохраню содержимое в файл, а затем использую np.load(), это также работает.

response, content = http.request('https://my_url/my_np_file.npy')

Если я пытаюсь загрузить массив из строки содержимогоЯ получаю ошибку ниже.Вероятно, это связано с тем, что np.load интерпретирует ввод строки как имя файла, а не сами данные.

Файл "/usr/lib/python2.7/dist-packages/numpy / lib / npyio.py ", строка 370, в загрузке fid = open (file," rb ") TypeError: аргумент file () 1 должен быть закодированной строкой без нулевых байтов, а не str

Есть ли способ загрузить массив без сохранения файла?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Я только что нашел обходной путь, используя shutil

import requests
import shutil
response = requests.get('http://path/to/test.npy', stream=True)

with open('haha.npy', 'wb') as fin:
    shutil.copyfileobj(response.raw, fin)

np.load('haha.npy') # Works!

Сначала будет загружен сам файл, но в автоматическом режиме.

0 голосов
/ 19 октября 2018

Можете ли вы добавить пример ответа 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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...