python - сохранить файл в формате .npy - PullRequest
0 голосов
/ 01 мая 2018

У меня есть dict, и я связываю массив с каждым ключом (сам ключ является числом).

Минимальный пример:

import numpy as np
data = {}
data[2.5] = np.array([np.array([1,2,3,4]), np.array([5,6,7,8])])

Тогда я сохраняю dict:

np.save('file.npy', data)

и затем перезагрузите его:

datanew = np.load('file.npy')

-

Теперь, чтобы получить доступ к тому, что хранится в каждом ключе, я не могу просто сделать:

datanew[2.5]

Но я должен сделать

datanew[()][2.5]
  • Почему?
  • Есть ли лучший способ сохранить дикты?

1 Ответ

0 голосов
/ 01 мая 2018

Причина в том, что аргумент np.save arr ожидает массив. Когда вы передали словарь, он вместо этого сохранил его как один за другим «безразмерный» массив. Поэтому, когда вы загружаете его, вам нужно извлечь «первый» элемент из этого безразмерного массива (т.е. [()]). Вы можете просто сделать это, когда позвоните по номеру np.load, и никогда больше об этом не беспокоиться:

datanew = np.load('file.npy')[()]

В качестве альтернативы, так как вы пытаетесь сохранить словарь, вы можете использовать pickle. np.save предполагается, что он оптимизирован для числовых массивов, я не знаю, получаете ли вы все еще преимущества, если поместите свои массивы в словарь, хотя ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...