Я загружаю довольно большие входные файлы в массив Numpy (30 столбцов, более 10 тыс. Строк).Данные содержат только числа с плавающей запятой.Чтобы упростить обработку данных, я хотел бы назвать столбцы и обращаться к ним, используя удобочитаемые имена.AFAIK это возможно только использование структурированных / записи массивов.Однако, если я прав, когда я использую структурированные массивы, я потеряю некоторую информацию.Например:
x = np.array([(1.0, 2), (3.0, 4), (11, 22)], dtype='float64')
y = np.array([(1.0, 2), (3.0, 4), (11, 22)], dtype=[('x', float), ('y', float), ('z', float)])
Оба массива содержат одинаковые данные и один и тот же тип dtype.к y можно получить доступ, используя имена столбцов:
yIn [155]: y['x']
Out[155]: array([ 1., 3., 11.])
К сожалению, я теряю (или я получаю неправильное впечатление?) столь важные свойства, когда я использую структурированные массивы.x и y имеют разные формы, y нельзя транспонировать и т. д.
In [160]: x
Out[160]:
array([[ 1., 2.],
[ 3., 4.],
[11., 22.]])
In [161]: y
Out[161]:
array([( 1., 2.), ( 3., 4.), (11., 22.)],
dtype=[('x', '<f8'), ('y', '<f8')])
In [162]: x.shape
Out[162]: (3, 2)
In [163]: y.shape
Out[163]: (3,)
In [164]: x.T
Out[164]:
array([[ 1., 3., 11.],
[ 2., 4., 22.]])
In [165]: y.T
Out[165]:
array([( 1., 2.), ( 3., 4.), (11., 22.)],
dtype=[('x', '<f8'), ('y', '<f8')])
Можно ли продолжать использовать "обычные двумерные массивы Numpy" и обращаться к столбцам, используя их имена?