怎样利用pandas求得三维数据的全局最大值,以及最大值所在的位置

可以用在参数的寻找上

比如:在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值