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
相关产品推荐
相关产品推荐

