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

如何使用NumPy内置方法计算一维数组元素间的相对差异并输出为二维数组?

如何使用NumPy内置方法计算一维数组元素间的相对差异并输出为二维数组?

嘿,这个需求完全不用写for循环,用NumPy自带的广播特性就能轻松搞定!我来给你拆解一下实现步骤:

首先从你的例子能看出来,二维结果数组里的每个位置(i,j),对应的相对差异是 ((原数组第i个元素 - 原数组第j个元素) / 原数组第j个元素) * 100,对吧?刚好可以用NumPy的广播机制来实现元素级的批量运算。

具体代码实现看这里:

import numpy as np

# 定义你的一维数组
arr = np.array([1, 2, 3])

# 把一维数组转换成列向量,这样和原数组运算时会自动广播为二维数组
arr_column = arr.reshape(-1, 1)

# 计算相对差异,一步到位
relative_diff_matrix = ((arr_column - arr) / arr) * 100

# 打印结果看看
print(relative_diff_matrix)

运行这段代码后,输出的结果就是你想要的:

[[  0.         -50.         -66.66666667]
 [100.           0.         -33.33333333]
 [200.          50.           0.        ]]

和你给出的np.array([[0,-50,-100*2/3], [100,0,-100*1/3], [200,50,0]])完全一致,只是浮点数的显示形式不同而已。

这里的关键是NumPy的广播机制:当你把一维数组转成列向量(形状变成(3,1))后,和原一维数组(形状(1,3))进行运算时,NumPy会自动把两者都扩展成(3,3)的二维数组,然后逐个元素执行减法、除法和乘法操作,全程不需要手动循环,效率比写for loop高太多,尤其是处理大数组的时候优势特别明显。

备注:内容来源于stack exchange,提问作者TylerD

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:58:07