Если я понимаю, что вы хотели бы сделать, вы хотите перебрать столбцы , так сказать, этот массив numpy из matplotlib.
После еще немного заваривания я предпринял еще одну попытку, используя предоставленные вами данные. В этой попытке я перебирал массив массивов, добавляя имена полей массивов numpy и большинство внутренних значений массивов в словарь как ключи и значения соответственно:
import scipy.io as spio
import numpy as np
mydata = spio.loadmat('testdict.mat')
new = mydata.get('testdict')
recordarr = np.rec.array(new)
myDictionary = {}
myList = []
for field in recordarr.dtype.names: #iterates through field names of numpy array
for array in recordarr[field]: #iterates through the array of each numpy array
for value in array:
myList.append(np.squeeze(value.flatten()[0]))
#print(np.squeeze(value.flatten()[0]))
myDictionary[field] = myList
myList = []
#break
Вот результат следующего кода, запрашивающего значение из ключа с именем year из переменной myDictionary :
In [153]: myDictionary['year']
Out[153]: [1852, 1852, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1854]
Приведенный выше результат можно рассматривать как результат, если закомментированные строки в данном коде раскомментированы.
Эта ссылка помогла мне понять, как отформатировать массив matplotlib numpy для доступа к значениям его полей.
Это сообщение также помогли мне понять, как получить значения из недавно отформатированных массивов matplotlib numpy.
Предыдущая попытка
Вот попытка перебрать желаемый массив, не полный ответ, а часть тем не менее, головоломка.
Если вы можете получить доступ к желаемому массиву в этих массивах, возможно, вы сможете перебирать их с помощью чего-то s аналогично этому:
Заявление об ограничении ответственности: не уверен, какие значения ключей предполагается использовать как целые числа.
arrays = [['Hello'], ['World'], ['Foobar'], ['Alice'], ['Bob'], ['Chuck']]
d = {}
n = 0
for array in arrays:
for element in array:
d[element] = n
n += 1
print(d)
Вывод
{'Hello': 0, 'World': 1, 'Foobar': 2, 'Anne': 3, 'Bob': 4, 'Chuck': 5}