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

如何高效实现Numpy数组逐行减多行并新增维度?

Numpy高效实现数组逐行批量减法

现有形状为(x, y)的Numpy数组A,和包含100个行向量的数组B(形状为(100, y)),需要让A的每一行分别减去B的每一行,最终得到形状为(x, y, 100)的结果数组。

你提供的循环拼接方法效率较低,尤其是当数组规模较大时,可利用Numpy的广播机制实现高效运算,无需Python级循环:

实现代码

import numpy as np

# 假设A形状为(x, y),B形状为(100, y)
# 扩展维度后利用广播完成批量减法
result = A[:, :, np.newaxis] - B.T[np.newaxis, :, :]

原理说明

  • Numpy广播会自动匹配维度:A扩展后的(x, y, 1)与B转置并扩展后的(1, y, 100),会被广播为(x, y, 100)的形状,直接完成逐元素减法运算。
  • 这种方式依托Numpy底层C实现的向量运算,比Python循环的效率高出几个数量级,且内存占用更优。

结果验证

运行代码后,可通过print(result.shape)确认输出形状为(x, y, 100)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:32:44