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

如何将数组与另一数组各元素逐元素相乘后拼接(无双重循环)

高效实现数组逐元素相乘后拼接的方法

给定两个NumPy数组:

import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])

需要得到结果数组 c:

np.array([[5, 10, 6, 12], [15, 20, 18, 24]])

要求先完成a与b的逐元素对应相乘,再将结果拼接,且不使用双重循环实现高效计算。

实现方法

利用NumPy的广播机制可以轻松实现,无需显式循环,充分利用底层优化提升效率:

方法一:广播+重塑形状

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])

# 通过添加新维度实现广播相乘,得到形状为(2,2,2)的中间数组
products = a[:, :, np.newaxis] * b
# 将中间数组重塑为目标形状
c = products.reshape(a.shape[0], -1)

方法二:广播+横向拼接

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])

# 遍历b的元素,与a广播相乘后横向拼接
c = np.hstack([a * num for num in b[0]])

原理说明

NumPy的广播机制会自动扩展数组形状,让维度不匹配的数组可以进行逐元素运算。两种方法都避免了Python层面的循环,转而使用NumPy底层的C优化运算,效率远高于双重循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:52:26