如何在NumPy二维数组中交换最小值与最大值?
交换NumPy二维数组的最小值与最大值
要实现这个需求,只需定位到数组中最小值和最大值的位置,再交换二者即可,以下是完整实现代码:
import numpy as np n = int(input("How many arrays: ")) m = int(input("How many numbers: ")) rng = np.random.default_rng() arr = rng.random((n, m)) print("原数组:") print(arr) # 获取最小值和最大值的二维坐标 min_pos = np.unravel_index(np.argmin(arr), arr.shape) max_pos = np.unravel_index(np.argmax(arr), arr.shape) # 交换两个位置的元素 arr[min_pos], arr[max_pos] = arr[max_pos], arr[min_pos] print("\n交换后数组:") print(arr)
核心逻辑说明:
np.argmin(arr)会返回数组扁平化后最小值的索引,np.unravel_index将这个一维索引转换为二维数组的(row, col)坐标- 用同样的方式
np.argmax(arr)和np.unravel_index获取最大值的二维坐标 - 直接通过坐标索引交换两个元素,这是NumPy中高效的元素交换方式
内容的提问来源于stack exchange,提问作者domitori
相关产品推荐
相关产品推荐

