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

如何用NumPy实现多维数组按对应一维数组元素逐行除法?

逐行对应元素除法的实现方法

方法一:利用Numpy广播机制(推荐)

Numpy的广播特性可以让你不用写循环,直接完成逐行的对应除法操作,代码简洁且效率更高:

import numpy as np

profile = np.array([[1,2,3,5],[3,6,2,5],[2,8,3,5]]) 
radius = np.array([4,8,3])

# 将radius转换为(3,1)的列向量,触发广播
profile_new = profile / radius[:, np.newaxis]

radius[:, np.newaxis]会把原本形状为(3,)的一维数组转换为(3,1)的二维数组,Numpy会自动将其扩展为与profile相同的(3,4)形状,从而实现每行元素对应除以radius的对应元素。

方法二:手动循环实现

如果需要用循环来完成,你需要先初始化一个和profile形状一致的数组,再逐行赋值:

import numpy as np

profile = np.array([[1,2,3,5],[3,6,2,5],[2,8,3,5]]) 
radius = np.array([4,8,3])

# 初始化同形状的空数组,指定浮点类型避免整数除法问题
profile_new = np.empty_like(profile, dtype=np.float64)

for idx in range(len(radius)):
    profile_new[idx] = profile[idx] / radius[idx]

你之前的循环代码问题在于没有保存每行的计算结果,而且变量名重复覆盖,导致最终只保留了最后一次循环的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:00:59