更改包含最大值和最小值python的列



我不明白为什么它不改变整列,而只改变每个列的一个值

找到最大值的指标>>

def findmax(row,col,newmatrix):
index=0
max=newmatrix[0][0]
for i in range(0,row):
for j in range(col):
if newmatrix[i][j] > max :
max = newmatrix[i][j]
index = j
return index

最小值查找指标>>

def findmin(row,col,newmatrix):
index=0
min=newmatrix[0][0]
for i in range(0,row):
for j in range(col):
if newmatrix[i][j] < min :
min = newmatrix[i][j]
index = j
return index

更改最高和最低值的列

def change(row,col,newmatrix):
for i in range (0,row):
temp=newmatrix[i][findmax(row, col, newmatrix)]
newmatrix[i][findmax(row, col, newmatrix)] = newmatrix[i][findmin(row, col, newmatrix)]
newmatrix[i][findmin(row, col, newmatrix)] = temp
for j in range(0,col):
print('%.2f'%newmatrix[i][j], end = " ")
print()

我认为您的代码不适合您,因为当您更改整个矩阵时,您正在为每行重复您的函数(因此它将为每行返回不同的值(。

为了修复代码,只需在for循环之前执行x=findmax(row, col, newmatrix),然后在循环内引用x,而不是调用函数。

不过一般来说,我会将您的代码重写为numpy,这样您就可以对列进行操作。我认为这样的东西会对你有用:

import numpy as np
x=np.array([[1,4,5], [7,4,2], [4,3,-2]])
x_max=np.unravel_index(x.argmax(axis=None), x.shape)
x_min=np.unravel_index(x.argmin(axis=None), x.shape)
temp=x[:,x_max[1]].copy()
x[:,x_max[1]]=x[:,x_min[1]]
x[:,x_min[1]]=temp
print(X)

输出:

[[ 5  4  1]
[ 2  4  7]
[-2  3  4]]
[Program finished]

最新更新