numpy笔记

numpy笔记

2026-04-17

记录一些常用的numpy操作

最值索引


对于一维数组(仅返回匹配到的第一个最值),argmax()argmin()最常用。PS:如果输入的数组是多维的,也会先展平(flatten)转化为一维数组。

import numpy as np
# 最小值用np.argmin()
arr = np.array([3, 1, 4, 1, 5, 9, 2])
max_idx = np.argmax(arr)
print(max_idx)  # 输出: 5 (值为9的索引)
print(arr[max_idx])  # 输出: 9

对于多维数组我推荐两种方法,其一是采用unravel_index() ,它的作用是将展平(flatten)后的索引转换为原始多维数组的坐标索引。

但该方法依然基于argmax()argmin(),所以仅返回匹配到的第一个最值

import numpy as np

arr = np.array([[1, 5, 3],
                [7, 2, 4]])

# 获取多维数组中的位置
max_idx_flat = np.argmax(arr)
max_idx_multi = np.unravel_index(max_idx_flat, arr.shape)
print(max_idx_multi)  # 输出: (1, 0) 即第1行第0列
print(arr[max_idx_multi])  # 输出: 7

# 一步到位的方法
max_idx_multi = np.unravel_index(np.argmax(arr), arr.shape)
print(max_idx_multi)  # (1, 0)

另外,我比较常用的是where() ,它可以处理多个最值,可以作为条件搜索。

import numpy as np
arr = np.array([[9, 1, 9],
                [3, 9, 2]])

# 获取最值
max_value = np.max(arr)
# 建立mask = arr == max_value
all_max_idx = np.where(arr == max_value)
# np.where将最值对应的行列分开储存为数组
print(all_max_idx)  # (array([0, 0, 1]), array([0, 2, 1]))
# 即 (0,0), (0,2), (1,1) 三个位置

# 转换为坐标列表
coords = list(zip(all_max_idx[0], all_max_idx[1]))
print(coords)  # [(0, 0), (0, 2), (1, 1)]

 


 

评论

暂无评论,快来抢沙发!

4 - 1 = ?
输入计算结果
分享这篇文章