Вы можете выполнить это с помощью панд. Вы можете выбрать столбцы с четным и нечетным индексом отдельно, а затем вычесть их.
@hiro главный герой, я не знал, что вы можете сделать это магию StringIO. Это пряный.
import pandas as pd
import io
data = io.StringIO('''ROI121 ROI122 ROI124 ROI125 ROI126 ROI127
292.087 190.238 299.837 189.488 255.525 187.012
300.837 190.887 299.4 188.488 248.637 187.363
292.212 191.6 299.038 188.988 249.65 187.5
300.15 192.4 307.812 189.125 247.825 188.113''')
df = pd.read_csv(data, sep='\s+')
Обратите внимание, что даже/нечетные члены могут быть противоречит здравому смыслу, потому что питон 0 индексированные, а это означает, что столбцы сигналов на самом деле даже индексированные и фоновые столбцы нечетно-индексированных. Если я правильно понимаю ваш вопрос, это противоречит использованию четной/нечетной терминологии. Просто указывая на разницу, чтобы избежать путаницы.
# strip the columns into their appropriate signal or background groups
bg_df = df.iloc[:, [i for i in range(len(df.columns)) if i%2 == 1]]
signal_df = df.iloc[:, [i for i in range(len(df.columns)) if i%2 == 0]]
# subtract the values of the data frames and store the results in a new data frame
result_df = pd.DataFrame(signal_df.values - bg_df.values)
result_df
содержит столбцы, которые разность между сигналом и фоновых столбцов. Вы, вероятно, захотите переименовать эти имена столбцов.
>>> result_df
0 1 2
0 101.849 110.349 68.513
1 109.950 110.912 61.274
2 100.612 110.050 62.150
3 107.750 118.687 59.712
Как представляются данные? Вы используете NumPy? Панды? Список списков? – user2357112
Это не структура данных python. Это CSV? – roganjosh
Да, это будет импортировано в python из файла CSV. – BioProg