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

Python NumPy如何按条件对同维度数组对应元素做除法运算

NumPy按条件做对应位置元素除法实现方案

方法1:复用你已获取的np.where索引

你通过np.where(F<100)拿到的两个数组分别是符合条件元素的行索引、列索引,直接将这两个索引作为矩阵下标,即可批量取出对应位置元素完成运算:

import numpy as np

F = np.array([[1, 4, 5], 
    [-5, 180, 9],
    [200, 3, 7]])
P = np.array([[11, 3, 9], 
    [4, 2, 77],
    [33, 4, 66]])

# 拆分出行、列索引
row_idx, col_idx = np.where(F < 100)
# 初始化结果矩阵,这里默认不满足条件的位置保留F的原始值,可按需替换为np.nan、0等其他值
result = F.copy()
# 对符合条件的位置执行F(i,j)/P(i,j)运算
result[row_idx, col_idx] = F[row_idx, col_idx] / P[row_idx, col_idx]

运行后得到的result结果为:

array([[ 9.09090909e-02,  1.33333333e+00,  5.55555556e-01],
       [-1.25000000e+00,  1.80000000e+02,  1.16883117e-01],
       [ 2.00000000e+02,  7.50000000e-01,  1.06060606e-01]])

方法2:布尔掩码直接索引(更简洁)

不需要拆分索引,直接把判断条件生成的布尔矩阵作为下标即可,逻辑和方法1完全一致,代码更短:

mask = F < 100
result = F.copy()
result[mask] = F[mask] / P[mask]

方法3:np.where三参数写法(一步生成结果)

直接利用np.where的条件判断能力,指定满足/不满足条件时的取值,不需要提前拷贝原矩阵:

# 语法:np.where(判断条件, 条件成立时的取值, 条件不成立时的取值)
# 这里不满足条件的位置保留F原值,可按需替换为np.nan等其他填充值
result = np.where(F < 100, F / P, F)

注意事项

  • 如果需要规避除零错误,可以把判断条件调整为(F < 100) & (P != 0),避免P中对应位置为0时触发运行警告
  • 不满足条件位置的填充值可根据业务需求自定义,没有强制保留原F值的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:39:45