可以用在参数的寻找上
比如:在Y=i+j+z这个函数中
参数i可以有六种取值,分别是0,1,2,3,4,5
参数j可以有四种取值,分别是0,1,2,3
参数z可以有三种取值,分别是0,1,2
当我们需要用遍历的方式求取Y的最大值等于多少,以及对应的参数i,j,z分别取什么的时候,可以使用以下方法。
import pandas as pd
#jjs=[]
jjmaxs=[]
for i in range(6):
jj=[]
for j in range(4):
zz=[]
for z in range(3):
zz.append(i+j+z)
#print(zz)
jj.append(zz)
jj=pd.DataFrame(jj)
print(jj)
jj_max_idx=jj.max(axis=1).idxmax()
#print(jj_max_idx)
jj_max_col=jj.max().idxmax()
#print(jj_max_col)
jj_max=jj.max().max()
#print(jj_max)
#jjs.append(jj)
jjmaxs.append([jj_max_idx,jj_max_col,jj_max])
print([jj_max_idx,jj_max_col,jj_max])
jjmaxs=pd.DataFrame(jjmaxs).T
print(jjmaxs)
print(jjmaxs.max(axis=1))
jjs_the_max=jjmaxs.max(axis=1)[2]
print("jjs_the_max: ",jjs_the_max)
col=jjmaxs.T.idxmax()[2]
print("+++++++++++++++++++++")
print(col) #最外层循环的参数
print("+++++++++++++++++++++")
jjs_the_max_idx=jjmaxs.iloc[0,col]
jjs_the_max_col=jjmaxs.iloc[1,col]
print("====================")
print(jjs_the_max_idx) #中层循环的参数
print("====================")
print(jjs_the_max_col) #内层循环的参数
print("====================")
print(jjs_the_max)
运行结果如下:
0 1 2
0 0 1 2
1 1 2 3
2 2 3 4
3 3 4 5
[3, 2, 5]
0 1 2
0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6
[3, 2, 6]
0 1 2
0 2 3 4
1 3 4 5
2 4 5 6
3 5 6 7
[3, 2, 7]
0 1 2
0 3 4 5
1 4 5 6
2 5 6 7
3 6 7 8
[3, 2, 8]
0 1 2
0 4 5 6
1 5 6 7
2 6 7 8
3 7 8 9
[3, 2, 9]
0 1 2
0 5 6 7
1 6 7 8
2 7 8 9
3 8 9 10
[3, 2, 10]
0 1 2 3 4 5
0 3 3 3 3 3 3
1 2 2 2 2 2 2
2 5 6 7 8 9 10
0 3
1 2
2 10
dtype: int64
jjs_the_max: 10
+++++++++++++++++++++
5
+++++++++++++++++++++
====================
3
====================
2
====================
10