抱歉,如果之前有人问过这个问题--我找不到这个具体的问题。
在python中,我想从前面的奇数列中减去每一个偶数列:
所以从:

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


101.849 110.349 68.513
109.95  110.912 61.274
100.612 110.05  62.15
107.75  118.687 59.712

列数未知。我应该使用pandasnumpy中的内容吗?
提前谢谢。

最佳答案

你可以用熊猫来完成这个任务。您可以分别选择偶数和奇数索引列,然后减去它们。
@希罗,主角,我不知道你能做那个斯金吉奥魔术。那很辣。

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+')

注意,偶数/奇数项可能有违直觉,因为python是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

关于python - python从前一个奇数列中减去每个偶数列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41411273/

10-12 22:26