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

Python 如何取出矩阵中每列包含最大值的行?,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我有一个包含3列的数据矩阵:x,y,z:每个列都有很多行 我需要找到每列每次包含最大值的行,以及最小值的行,然后将所有这些行写入数据帧 假设我有: 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

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

我需要找到每列每次包含最大值的行,以及最小值的行,然后将所有这些行写入数据帧

假设我有:

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,x2,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数据

我正在使用
pandas
解决这个问题,因为您用相同的标记了这个问题。而且,我无法匹配您提供的输出。我希望这是一个打字错误。但是我已经按照你的描述去做了<代码>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]

我没有得到你需要的输出格式。您也提到数据帧,这是输出吗?也许你也可以给出一个输出的例子…当然,我更改了示例编号,因为它是一个小列表,输出中可能会有重复,因为同一行可以取两次,因为它都包含不同变量的最小值和/或最大值,但我尝试替换这些数字以避免它。非常感谢,只是为了确保,由x1,x2,y2,z3,。。。我指的是同一行上对应的x、y或z,其中一个值x、y或z为max或min。你的情况就是这样吗?是的。这就是我试图回答的问题。你可以用你的输入数组来验证这一点。亲爱的纳吉姆,我猜,我只是弄错了顺序,我不得不写。但不管怎样,你注意到了吗,x2实际上不是x的第二个参数,当y最大时,它只是对应的行,依此类推?