Описание
В основном Моя проблема связана с загрузкой данных из файлов CSV.Я уже создал код, способный загружать заданное количество столбцов внутри массивов (см. Пример). Теперь Я хотел бы улучшить код, чтобы я мог изменить номер столбца для чтения и загрузки, не меняя мой код каждый раз.Иными словами, я бы хотел, чтобы мой код динамически адаптировался к числу выбранных мной столбцов.Позвольте мне привести пример моего настоящего кода.
Пример кода
Шаги :
1 .С помощью Tkinter я выбираю файлы, которые хочу загрузить, эта часть кода возвращает file_path
, содержащий несколько путей к файлам.
2 Затем я определяю полезные параметры для чтения CSV.Я создаю массивы, которые хочу загрузить с моими данными, а затем загружаю данные.
n = len(file_path) # number of files
# here I just determine the size of each files with a custom function, m is the maximum size
all_size , m = size_data(file_path,row_skip,col_to_read,delim)
# I create the arrays
shape = (n, m)
time = zeros(shape)
CH1 = zeros(shape)
# define CSV parameters before using loadtxt
row_skip = 5
delim = ';'
col_to_read = (0,1) # <= This is where I choose the columns to be read
# I load the arrays
for k in range(0, len(file_path)):
end = all_size[k] # this is the size of the array to be loaded.
# I do this in order to avoid the annoying error
# ValueError: could not broadcast input array from shape (20) into shape (50)
time[k][:end], CH1[k][:end] = loadtxt(file_path[k],
delimiter=delim,
skiprows=row_skip,
usecols=col_to_read,
unpack=True)
Моя проблема заключается в том, что если в каждом файле есть 3 столбца, то есть col_to_read = (0,1,2)
, я должен добавитьновый массив CH2 = zeros(shape)
при создании и при загрузке.Я хотел бы решение, которое динамически адаптируется к количеству столбцов, которые я хочу загрузить.Только col_to_read
будет изменено вручную. В идеале Я бы хотел реализовать этот код внутри функции, потому что я много анализирую данные и не хочу, чтобы один и тот же код вставлялся в каждую программу.
Первая идея
Я уже нашел способ динамически создавать заданное количество массивов нулей ( см. Здесь ).Это довольно прямо.
dicty = {}
for i in file_path:
dicty[i] = []
это кажется хорошим, но теперь я бы хотел, чтобы последняя строка работала независимо от количества переменных.Я считаю, что есть удобный способ адаптировать мой код и использовать это dicty
, но есть кое-что, чего я не понимаю, и я застрял.
Буду признателен за любую помощь.