Я использую np.genfromtxt()
для чтения серии текстовых файлов с разделителями-запятыми и загрузки в NumPy массивы для последующей обработки (и в конечном итоге записи в HDF5).
Код работает нормально (возвращает массив), когда Есть 4 (или более) строки (1 заголовок, 2+ строки данных, 1 нижний колонтитул). Проверка array.shape после чтения 4 строк дает (2, )
. (первая и последняя строки не читаются)
Я не понимаю, что возвращается, когда у меня есть только 3 строки (1 заголовок, 1 строка данных, 1 нижний колонтитул). Проверка array.shape дает ()
, и когда я печатаю массив, скобки не отображаются []
. Я думаю, что это список. Что мне нужно сделать, чтобы получить массив, когда np.genfromtxt()
находит только одну строку данных?
Я создал пример для mimi c поведения с двумя простыми файлами. (Данные и вывод следуют за исходным кодом). Примечания: Имена полей и тип данных определяются с помощью np.dtype.
. Я использую skip_header=1, skip_footer=1
, чтобы пропустить первые и последние строки, и usecols=()
, чтобы прочитать только некоторые столбцы.
import numpy as np
import glob
dsp_dt = np.dtype ( [('H','S2'), ('YYMMDD',int),
('NAME','S40'), ('COUNT',int)] )
for dsp_name in glob.glob('data_2019-10-*.txt'):
print(dsp_name)
dsp_recarr = np.genfromtxt(dsp_name, delimiter=',', dtype=dsp_dt,
skip_header=1, skip_footer=1, usecols=(1,2,3),
names=None, encoding=None)
print(dsp_recarr.dtype)
print(dsp_recarr.shape)
print(dsp_recarr)
Файл: data_2019-10-01.txt
H,YYMMDD,NAME,COUNT
S,191001,NAME_1,13
S,191001,Overall,13
F,191001
Файл: data_2019-10-02.txt
H,YYMMDD,NAME,COUNT
D,191002,NODATA,0
F,191002
Выход:
data_2019-10-01.txt
[('YYMMDD', '<i4'), ('NAME', 'S40'), ('COUNT', '<i4')]
(2,)
[(191001, b'NAME_1', 13) (191001, b'Overall', 13)]
data_2019-10-02.txt
[('YYMMDD', '<i4'), ('NAME', 'S40'), ('COUNT', '<i4')]
()
(191002, b'NODATA', 0)