Я посмотрел на файл .mat:
e8[0][0][0][0][0]
соответствует iso c .e8.one: т.е. [[B], [V], [logage]]
e8[0][0][0][0][1]
соответствует iso c .e8.two: то есть [[B], [V], [logage]]
e8[0][0][0][0][0][0][0][0]
извлечет iso c .e8.one.B т.е. [14.591, ..., -1.415]
e8[0][0][0][0][0][0][0][1]
извлечет iso c .e8.one.V т.е. [13.014, ..., -2.990]
e8[0][0][0][0][1][0][0][0]
будет извлекать iso c .e8.two.B т.е. [14.590, ..., 0.818]
Основываясь на том, что сказал @hpaulj, и небольшое исследование, объединяющее список списков, которые я придумал:
import pandas as pd
from scipy.io import loadmat
import itertools
isochrones = loadmat('isochrones.mat')
isoc = isochrones['isoc']
e8 = isoc['e8']
e9 = isoc['e9']
keys = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
e8_dict = {}
e9_dict = {}
for i in range(len(keys)):
e8_dict[keys[i]] = [list(itertools.chain.from_iterable(j)) for j in e8[0, 0][0, 0][i][0, 0]]
e9_dict[keys[i]] = [list(itertools.chain.from_iterable(k)) for k in e9[0, 0][0, 0][i][0, 0]]
e8_df = pd.DataFrame.from_dict(e8_dict, orient='index', columns=['B', 'V', 'logage'])
e9_df = pd.DataFrame.from_dict(e9_dict, orient='index', columns=['B', 'V', 'logage'])
Итак, данные для isoc.e8.one
могут быть доступны с помощью e8_df.loc['one']
, а данные для isoc.e8.one.B
могут быть доступны с помощью e8_df.loc['one']['B']
, который возвращает массив данных B.
На изображении ниже показан печатный вывод e8_df