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

如何用Numpy向量化操作计算(N,3)与(M,3)数组的指定差值?

Numpy向量化实现数组差值计算

针对你提出的需求,利用Numpy的广播机制就能高效实现无循环的向量化操作,这也是最优的解决方案,具体步骤如下:

核心实现

通过给数组B添加一个中间维度,让其形状从(M, 3)变为(M, 1, 3),随后直接与数组A做减法运算,Numpy会自动完成维度匹配的广播扩展:

import numpy as np

# 生成示例数据(可替换为你的实际数组)
N = 5
M = 3
A = np.random.rand(N, 3)
B = np.random.rand(M, 3)

# 方法1:使用np.expand_dims显式扩展维度
C = A - np.expand_dims(B, axis=1)

# 方法2:使用索引[:, None, :]隐式扩展维度(更简洁)
C = A - B[:, None, :]

原理说明

  • 数组A的形状为(N, 3),扩展维度后的B形状为(M, 1, 3)。
  • 根据Numpy广播规则,A会被自动扩展为(M, N, 3),B会被扩展为(M, N, 3),两者对应位置的元素相减,最终得到形状为(M, N, 3)的数组C,其中C[i, :, :]恰好等于A - B[i]。

验证结果

执行print(C.shape)会输出(M, N, 3),完全符合需求。该方法无需手动循环,依赖Numpy内部优化的广播运算,计算效率远高于循环实现,且不会产生额外的内存冗余。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:46:04