Преобразовать загруженный файл mat обратно в массив numy - PullRequest
1 голос
/ 12 апреля 2019

Я сохраняю изображения в массиве размером 5000,96,96 в файл .mat, используя scipy.io.savemat().

Когда я хочу загрузить эти изображения обратно в Python, я использую scipy.io.loadmat(), но на этот раз они помещаются в словарь.

Как аккуратно поместить их из словаря в массив NumPy?

Я использую scipy.io.loadmat для загрузки файла Matlab и хочу поместить его в массив NumPy. Изображения имеют тусклый = (5000,96,96)

scipy.io.savemat("images.mat")
z = scipy.io.loadmat("images.mat")

изображения в массиве NumPy

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Сохранить трехмерный массив:

In [53]: from scipy import io                                                   
In [54]: arr = np.arange(8*3*3).reshape(8,3,3)                                  
In [56]: io.savemat('threed.mat',{"a":arr})                                     

Загрузить:

In [57]: dat = io.loadmat('threed.mat')                                         
In [58]: list(dat.keys())                                                       
Out[58]: ['__header__', '__version__', '__globals__', 'a']

Доступ к массиву по ключу (обычное словарное действие):

In [59]: dat['a'].shape                                                         
Out[59]: (8, 3, 3)
In [61]: np.allclose(arr,dat['a'])                                              
Out[61]: True
0 голосов
/ 12 апреля 2019

Согласно этому сообщению: Python диктует numy структурированный массив

Покрытие словаря в numpy массив может быть сделано следующим образом:

import numpy as np
result = {0: 1.1, 1: 0.7, 2: 0.9, 3: 0.5, 4: 1.0, 5: 0.8, 6: 0.3}

names = ['id','value']
formats = ['int','float']
dtype = dict(names = names, formats=formats)
array = np.array(list(result.items()), dtype=dtype)

print(repr(array))

Это приводитк следующему результату:

array([(0, 1.1), (1, 0.7), (2, 0.9), (3, 0.5), (4, 1. ), (5, 0.8),
       (6, 0.3)], dtype=[('id', '<i4'), ('value', '<f8')])

У вас есть пример словарной записи, которую вы пытаетесь преобразовать?

...