You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Numpy数组每行最小值并转为列向量(适配Matlab语法)

Numpy按行提取最小值并转为列向量的实现

首先生成目标3×4数组:

import numpy as np
data = np.array([[35, 20, 47, 39],
                 [6, 17, 77, 85],
                 [8, 25, 2, 3]])

通过np.argmin获取每行最小值的索引数组:

kmin = np.argmin(data, axis=1)  # 输出:array([1, 0, 2])

直接使用data[:, kmin]会得到3×3数组,不符合需求。要得到列向量形式的每行最小值,有两种实用方法:

方法1:高级索引+reshape

利用行索引与kmin的一一匹配,提取对应元素后转为列向量:

# 生成行索引数组,与kmin的每个索引一一对应
row_indices = np.arange(data.shape[0])
# 提取每行对应最小值,再reshape为列向量
min_vals = data[row_indices, kmin].reshape(-1, 1)

输出结果:

[[20]
 [ 6]
 [ 2]]

方法2:使用np.take_along_axis(贴近Matlab逻辑)

该方法专门用于按指定轴的索引提取元素,将kmin转为列向量后直接提取,无需额外reshape,逻辑和Matlab语句data(1:n1,kmin,1)高度适配:

# 将kmin转为列向量,匹配原数组的列维度
kmin_col = kmin.reshape(-1, 1)
# 沿axis=1(列方向)提取对应索引的元素
min_vals = np.take_along_axis(data, kmin_col, axis=1)

输出结果与方法1完全一致。

内容的提问来源于stack exchange,提问作者Standard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:15:39