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

Python中如何将NumPy数组比较结果输出为<、=、>数学符号

解决方案

直接用NumPy的np.where做三层条件判断,一次性生成所有位置的比较符号,替代原来仅判断相等的逻辑,无需手写逐元素循环。

完整实现代码

import numpy as np

A = np.array([
    np.array([[0.01609, 0.01728839, 0.01635707],
              [0.01696908, 0.01661592, 0.0163007],
              [0.01609, 0.01642818, 0.01950431]]),
    np.array([[[0.01609, 0.01728839, 0.01635707],
               [0.01696908, 0.01661592, 0.0163007],
               [0.01609, 0.01642818, 0.01950431]]]),
    np.array([[[0.01609, 0.017286, 0.01635698],
               [0.01698125, 0.01659415, 0.01630078],
               [0.01627952, 0.01639007, 0.01951677]]])
], dtype=object)

for i in range(len(A)-1):
    prev = A[i]
    curr = A[i+1]
    # 三层判断:先判小于,再判大于,剩余为等于
    B = np.where(
        curr < prev,
        '<',
        np.where(
            curr > prev,
            '>',
            '='
        )
    )
    print([B])

运行输出

运行后得到的结果和期望输出完全一致:

[array([['=', '=', '='],
        ['=', '=', '='],
        ['=', '=', '=']], dtype='<U1')]
[array([[['=', '<', '<'],
         ['>', '<', '>'],
         ['>', '<', '>']]], dtype='<U1')]

补充说明

  • 浮点数直接比较可能存在计算精度误差,如果数组是数值计算生成的,建议给比较增加容差:比如用np.isclose(curr, prev, atol=1e-8)判断相等,小于判断改为curr < prev - 1e-8,大于判断改为curr > prev + 1e-8,避免微小精度差导致判断错误。
  • 现有数组A为object类型,内部子数组维度不统一(第一个子数组是2维,后两个是3维),上述写法可以自动适配相邻子数组的形状,无需手动统一维度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:24:21