Python如何计算多参数组合下两个自定义函数的全部可能输出值
实现方案
1. 全参数组合遍历与结果计算
直接用Python标准库itertools.product生成四个参数的所有笛卡尔积组合,遍历计算两个函数的输出即可,完整代码如下:
import itertools import pandas as pd import matplotlib.pyplot as plt # 原有函数保留 def BIC (x1, x2, x3, x4): return (75 / x1) + (85 / x2) + (55 / x3) + (12 * x4) def TOjuli(x1, x2, x3, x4): # 可直接复用BIC结果简化计算:return 400*1000 / BIC(x1,x2,x3,x4) return ((400 * 1000) / ((75 / x1) + (85 / x2) + (55 / x3) + (12 * x4))) # 原有参数选项保留 x1_options = [6, 7, 8] x2_options = [4, 5, 6] x3_options = [2, 3, 5] x4_options = [0.5, 0.4, 0.6] # 生成所有参数组合 all_params = list(itertools.product(x1_options, x2_options, x3_options, x4_options)) # 初始化结果存储 result_df = pd.DataFrame(all_params, columns=['x1', 'x2', 'x3', 'x4']) bic_list = [] tojuli_list = [] # 遍历计算所有结果 for x1, x2, x3, x4 in all_params: bic_val = BIC(x1, x2, x3, x4) tojuli_val = TOjuli(x1, x2, x3, x4) bic_list.append(bic_val) tojuli_list.append(tojuli_val) # 写入DataFrame方便后续查询分析 result_df['BIC'] = bic_list result_df['TOjuli'] = tojuli_list # 可打印查看所有结果 print(result_df)
2. 散点图绘制
以BIC为横轴、TOjuli为纵轴的散点图实现代码如下:
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文显示问题 plt.rcParams['axes.unicode_minus'] = False plt.figure(figsize=(9, 5)) plt.scatter(result_df['BIC'], result_df['TOjuli'], color='steelblue', alpha=0.7, s=60) plt.xlabel('BIC计算值', fontsize=12) plt.ylabel('TOjuli计算值', fontsize=12) plt.title('全参数组合下BIC与TOjuli对应关系散点图', fontsize=14) plt.grid(linestyle='--', alpha=0.3) plt.show()
补充说明
- 本次参数总组合数为333*3=81组,计算无性能压力
- 若需要绘制单个参数与函数输出的对应关系,只需修改scatter的x轴为对应参数列即可,比如
plt.scatter(result_df['x1'], result_df['BIC'])即可查看x1对BIC的影响 - TOjuli函数可直接复用BIC的计算结果,无需重复计算表达式,提升运行效率
内容的提问来源于stack exchange,提问作者Bots
相关产品推荐
相关产品推荐

