使用Python numpy 找数组中最大值及次大值、第三大值等最值

使用Python numpy 找数组中最大值及次大值、第三大值…

下面就贴上代码

def find_max(a):
    b = np.zeros(4)
    c = np.zeros(4)
    c[0] = np.max(a)    #最大值
    b[0] = np.where(a==c[0])[0]     #最大``值位置
    new_a = np.delete(a,b[0])

    c[1] = np.max(new_a)    #次大值
    b[1] = np.where(new_a==c[1])[0]     #找出次大值位置。注:位置为新数组位置,无意义
    new_a1 = np.delete(new_a,b[1])

    c[2] = np.max(new_a1)   #第三大值
    b[2] = np.where(new_a1==c[2] )[0]   #找出第三大值位置
    new_a2 = np.delete(new_a1,b[2])

    c[3] = np.max(new_a2)   #第四大值
    b[3] = np.where(new_a2==c[3])[0]    #找出第四大值位置
    return b,c

函数中a为需要查找的数组,b和c的大小可以根据所需进行更改,因为我要找四个最值,所以就设置为4。
返回值中b并无实际应用,因为里面数组已经进行删除更改,返回值中c为找到的最大值 。若需知道几个值的索引,在加上下面几行代码:

fmax_index,fmax = find_max(row_sum)
print(fmax)             #输出所在列
row_sum_max = np.where(row_sum==np.max(row_sum))[0]

row_sum为所需查找数组。

第一次写博客,有什么错误地方还请各位大神指出。
共勉!

### 查二维数组中的最大值 #### C语言实现方法 在C语言中,可以通过遍历整个二维数组来寻其中的最大值。具体做法是从第一个元素开始初始化`max`和`min`变量,随后通过双重循环访问每一个元素并与当前记录的最大值比较并更新[^4]。 ```c #include <stdio.h> #define N 3 #define M 4 int main() { int a[N][M], i, j, max, min; // 输入数据部分省略 max = a[0][0]; min = a[0][0]; for (i = 0; i < N; ++i) { for (j = 0; j < M; ++j) { if (a[i][j] > max) max = a[i][j]; if (a[i][j] < min) min = a[i][j]; } } printf("Max=%d\nMin=%d\n", max, min); return 0; } ``` #### Java实现方式 对于Java而言,在处理多维数组时同样可以采用类似的逻辑结构来进行查询操作。这里展示了一个简单的例子用于说明如何获取给定分数矩阵内的高分与低分[^2]: ```java public class Main { public static void main(String[] args){ double[][] scores = {{89.5,76.5},{92.5,88.5}}; double maxScore = Double.NEGATIVE_INFINITY; double minScore = Double.POSITIVE_INFINITY; for(int row = 0 ;row<scores.length;++row){ for(double element :scores[row]){ if(element>maxScore){ maxScore=element;} if(element<minScore){ minScore=element;} } } System.out.println("Maximum Score:"+maxScore+"\nMinimum Score:"+minScore); } } ``` #### Python实现方案 Python提供了更加简洁的方式来完成这项任务。可以直接利用内置函数`min()`以及`max()`配合列表解析表达式快速得到结果。需要注意的是当直接应用于嵌套列表(即所谓的“二维列表”)上可能会遇到错误提示,因此应该先将其展平成一维形式再调用这些函数[^3]。 ```python import numpy as np def flatten(lst): return [item for sublist in lst for item in sublist] data = [[1, 2, 3], [4, 5, 6]] flat_data = flatten(data) print(f'Maximum Value:{np.max(flat_data)}') print(f'Minimum Value:{np.min(flat_data)}') # 或者不使用numpy库的情况下也可以这样写: print('Maximum Value:', max(flatten(data))) print('Minimum Value:', min(flatten(data))) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值