import numpy as npimport pandas as pddf = pdread_csv2023_2_20No22023_2_20_19csvencoding = utf-8df = dfiloc118df_tumor = dfdfname == tumordf_peritumor = dfdfname == peritumor dfname = dfname + dfprope
这段代码可以简化如下:
- 可以将 df_tumor_A 至 df_peritumor_H 的代码合并为一个循环,使用字典和字符串格式化来实现:
tumor_dict = {}
peritumor_dict = {}
for name in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']:
df_tumor_name = df_tumor[df_tumor['property'] == name]
df_peritumor_name = df_peritumor[df_peritumor['property'] == name]
tumor_dict[name] = df_tumor_name
peritumor_dict[name] = df_peritumor_name
- 可以将计算插值的部分写成一个函数,减少重复代码:
def calculate_conductivity(df, df_saline_median):
conductivity_list = [976,1987,3850,5650,7450,9238]
conductivity_list.reverse()
result = []
for i in range(len(freq_list)):
ans = df_saline_median.iloc[:,i:i+1]
ans = ans.values.tolist()
new_ans = sorted([ans[j][0] for j in range(len(ans))])
result.append(np.interp(df.iloc[:, i+2:i+3].median(), new_ans, conductivity_list))
return result
- 可以将计算肿瘤和周围组织电导率的部分写成一个循环,使用上面的函数来计算:
for name in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']:
tumor_result = calculate_conductivity(tumor_dict[name], df_saline_median)
peritumor_result = calculate_conductivity(peritumor_dict[name], df_saline_median)
print(f"Tumor {name}: {tumor_result}")
print(f"Peritumor {name}: {peritumor_result}")
这样可以将代码从重复的部分中解放出来,使其更加简洁和易于维护
原文地址: https://www.cveoy.top/t/topic/cc8F 著作权归作者所有。请勿转载和采集!