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

如何在不使用for循环的情况下获取NumPy数组每行的最小值?

获取NumPy数组每行最小值的无循环方案

你可以直接利用NumPy的向量化内置方法来实现,完全不需要显式循环(包括列表推导式这类Python层面的循环),具体有两种等价写法:

方法示例

首先定义你的数组:

import numpy as np
data=np.array([[ 0.000e+00,  0.000e+00],
       [ 0.000e+00,  0.000e+00],
       [-3.590e+00, -1.448e+00],
       [ 3.642e-02,  4.813e-02],
       [ 2.149e+02,  2.186e+02],
       [ 6.147e+01,  6.633e+01],
       [ 3.733e-02,  4.821e-02],
       [ 2.131e+02,  2.186e+02],
       [ 6.205e+01,  6.633e+01],
       [-4.220e-01, -7.210e-02],
       [ 2.110e-09,  6.797e-10],
       [ 1.198e-11,  2.675e-12],
       [ 1.603e+02,  1.362e+02]])

写法1:调用np.min()函数

指定axis=1表示按行取最小值:

row_mins = np.min(data, axis=1)

写法2:调用数组自身的min()方法

效果和上面完全一致:

row_mins = data.min(axis=1)

输出结果

执行后会得到一个一维NumPy数组:

array([ 0.00000000e+00,  0.00000000e+00, -3.59000000e+00,  3.64200000e-02,
        2.14900000e+02,  6.14700000e+01,  3.73300000e-02,  2.13100000e+02,
        6.20500000e+01, -4.22000000e-01,  6.79700000e-10,  2.67500000e-12,
        1.36200000e+02])

如果需要转换成Python列表,只需追加.tolist():

row_mins.tolist()

得到的结果和你用列表推导式生成的完全相同:

[0.0, 0.0, -3.59, 0.03642, 214.9, 61.47, 0.03733, 213.1, 62.05, -0.422, 6.797e-10, 2.675e-12, 136.2]

优势说明

这类NumPy内置的向量化操作是底层用C实现的,比Python层面的循环(包括列表推导式)效率高得多,尤其是处理百万级以上的大规模数组时,性能差距会非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:40:34