* Изменен на меньший пример, потому что StackEx не может отображать длинные примеры 281.
Я использовал np.genfromtxt для загрузки 8997 строк с 18 столбцами в ndarray, но он создал одномерный массив с 8997 строками.
data [0] печатает первую строку
data [0] [0] первый элемент
data [0,0] печатает следующую ошибку:
Traceback (последний вызов был последним): файл "", строка 1, в данных [0,0] IndexError: слишком много индексов для массива
Можно ли преобразовать его в 2D-массив?Почему genfromtxt не создает 2D-массив?
Если это помогает,
len (data [0]) = 18, но data [0] .shape возвращает "()".
Итак, genfrontxt обнаруживает каждый элемент в строке, но сохраняет их как одну строку.Существует ли элегантный способ преобразования этого 1D-массива в 2D-массив размером 8997 x 18?
Редактирует для справки:
Команды загрузки:
data = np.genfromtxt (filepath.replace ('. dfn', '.dat'), dtype = None, names = csvnames)
data = np.genfromtxt (filepath.replace ('. dfn', '.dat'),dtype = None, names = csvnames, delimiter = widths)
Я использовал оба и получил один и тот же ndarray.Я кормлю в списке имен столбцов.Использование фиксированной ширины не изменило результат.Я позволил функции определить типы данных, что и делает нормально.
Свойства данных
data.shape (8997,)
Первая строка файла данных - (первый столбецстроковое значение DATA)
DATA 190010.0 1284 4 190010 1783000 20170122 0 131.000035 -31.255325 119016.47 6535194.03 58.55 62.06 987.22 22.61 55076.69 10476.91 8155.08 57238.0957 57238.6536 58639.18 57795.78
Первая строка из ndarray -> data [0]
(b'DATA', 190010., 1284, 4, 190010, 1783000, 20170122, 0, 131.000035, -31.255325, 119016.47, 6535194.03, 58.55, 62.06, 987.22, 22.61, 17830. , 133.71)
data.type
[('COMM', 'S4'), ('FLTLINE', '<f8'), ('Project', '<i4'), ('Flight', '<i4'), ('Line', '<i4'), ('Fid', '<i4'), ('YYYYMMDD', '<i4'), ('Bearing', '<i4'), ('Long', '<f8'), ('LATITUDE', '<f8'), ('EAST', '<f8'), ('NORTH', '<f8'), ('RadAlt', '<f8'), ('LasAlt', '<f8'), ('Press', '<f8'), ('Temp', '<f8'), ('GPSTime', '<f8'), ('GPSHt', '<f8')]