如何取出每列中包含最大值的矩阵?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

如何取出每列中包含最大值的矩阵?

一码平川MACHEL 2019-01-23 16:53:36 718

我有一个包含3列的数据矩阵:x,y,z:每个都有很多行。

我需要找到每个coloumn每次包含最大值的行,并且最小值也是相同的行,然后将所有这些行写入数据帧。

x= [1,2,4,3] , y= [7,8,6,5] , z= [12,10,11,9]
找到我做的相应行:

alldata=[];

alldata.append([x]);

alldata.append([y]);

alldata.append([z]);

for elem in alldata:

xarr=np.array(elem)
rowmax=xarr.argmax()
ind= alldata.index(elem)
maxcorr.append(alldata[ind][0][rowmax])

for elem in alldata:

xarr=np.array(elem)
rowmin=xarr.argmin()
ind= alldata.index(elem)
maxcorr.append(alldata[ind][0][rowmin])

问题是当我需要编写相应的行时,类似于:

XMAX,Y,Z,X,YMAX,Z2,X3,Y3,ZMAX,XMIN,Y4,Z4,.....

为了写我试过的相应行:

x=np.transpose(x);

y=np.transpose(y);

z=np.transpose(z);

mydata=[]
mydata.append(x)
mydata.append(y)
mydata.append(z)

mydata=np.array(mydata)
在数据框上写:

casename=['Xmax', 'Y', 'Z', ,'Xmin', 'Y', 'Z', 'X', 'Ymax', 'Z', 'X', 'Ymin', 'Z', 'X', 'Y', 'Zmax','X', 'Y', 'Zmin']
mydata=np.array(mydata).reshape(-1, len(casename))
df = pd.DataFrame(mydata, index=Filenames, columns=casename)
显然mydata是我正在寻找的形式,这不是在代码中制定的,而是我的问题。无法从mydata中取出相应的行

例如,根据示例我想要的输出是:

[4,5,11,1,7,12,2,8,10,3,5,9,1,7,12,3,5,9]

还有一件事:文件名不应该改变,因为我有几个带有这些X,Y,Z数据的文件

Python
分享到
取消 提交回答
全部回答(1)
  • 一码平川MACHEL
    2019-07-17 23:26:44

    xmax,y,z,x2,ymax,z2,x3,y3,zmax,xmin,y4,z4,.....

    df = pd.DataFrame(list(zip(x, y, z)), columns=['x', 'y', 'z'])
    mylist = []
    for i in df.columns:

    mylist+=(list(df.loc[df[i].argmax()]))

    for i in df.columns:

    mylist+=(list(df.loc[df[i].argmin()]))

    Out: [4, 6, 11, 2, 8, 10, 1, 7, 12, 1, 7, 12, 3, 5, 9, 3, 5, 9]

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程