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

如何用NumPy无循环实现二维数组与一维数组逐元素相乘得三维数组

NumPy数组广播实现二维数组与一维数组的逐元素相乘生成三维数组

核心思路是利用NumPy广播机制,无需循环即可完成向量化运算,直接生成目标三维数组。

实现代码

import numpy as np

# 定义原始数组
A = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])
B = np.array([1, 2, 3, 4])

# 方法1:通过np.newaxis为B增加维度,实现广播相乘
C = B[:, np.newaxis, np.newaxis] * A

# 方法2:用reshape调整B的形状,效果相同
# C = B.reshape(-1, 1, 1) * A

# 验证结果
print(C)

原理说明

  • 原始数组形状:A是(3,3),B是(4,)
  • 通过[:, np.newaxis, np.newaxis]或reshape(-1,1,1),将B的形状转为(4,1,1)
  • NumPy广播会自动将B的每个元素扩展为与A同形状的(3,3)数组,然后对应位置元素相乘,最终得到形状为(4,3,3)的三维数组C,完全符合预期格式。

这种方式是纯向量化运算,依赖NumPy底层的C优化,运算效率远高于Python循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:12:21