Не удалось загрузить словарь, сохраненный как .npz - PullRequest
0 голосов
/ 25 октября 2018

У меня есть словарь, сохраняющий сразу как один объект, используя np.savez , когда я открываю его с помощью np.load следующим образом:

l получаю следующее:

my_dic=np.load('/home/values.npz')
my_dic.files
['scores']

Однако, когда я пытаюсь:

my_dic['scores'] # len(my_dic['scores'])=1 but contains 3000 keys and 3000 values

, он выводит все ключи и значения как один объект.

Есть ли способ получить доступ к значениям иключи?

что-то вроде:

for k,values in my_dic['scores'].items():

    # do something

Спасибо

Ответы [ 2 ]

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

Следуя указаниям @hpalj, я сделал следующее, чтобы решить проблему:

x=list(my_dic['scores'].item()) #allows me to get the keys 
keys=[]
values=[]
for i in np.arange(len(x))
  value=my_dic['scores'].item()[x[i]]
  values.append(value)
  keys.append(x[i])

final_dic=dict(zip(keys,values))
0 голосов
/ 25 октября 2018

Звучит так, как вы:

In [80]: np.savez('test.npz', score={'a':1, 'b':2})

In [81]: d = np.load('test.npz')
In [83]: d.files
Out[83]: ['score']
In [84]: d['score']
Out[84]: array({'a': 1, 'b': 2}, dtype=object)

Это массив из 1 элемента с dtype объекта.Извлеките этот элемент с помощью item():

In [85]: d['score'].item()
Out[85]: {'a': 1, 'b': 2}

Если вместо этого я сохраню словарь с синтаксисом kwargs:

In [86]: np.savez('test.npz', **{'a':1, 'b':2})
In [87]: d = np.load('test.npz')
In [88]: d.files
Out[88]: ['a', 'b']

Теперь каждый ключ словаря является файлом в архиве:

In [89]: d['a']
Out[89]: array(1)
In [90]: d['b']
Out[90]: array(2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...