Numpy数组运算优化:一维数组间元素批量运算的高效实现
更高效的NumPy数组运算实现方法
当然有更高效的实现方式——用NumPy的广播机制,这不仅代码更简洁,还能节省内存、提升计算效率,而且完全支持加减乘除所有四则运算。
核心实现代码(乘法示例)
import numpy as np a = np.array([1, 2, 3, 4]) b = np.array([5, 6]) # 利用广播直接运算,无需显式创建重复数组 result = b[:, np.newaxis] * a print(result) # [[ 5 10 15 20] # [ 6 12 18 24]]
简化写法原理
b[:, np.newaxis]将一维数组b转为形状为(2,1)的二维数组- 一维数组
a会被NumPy自动广播为形状(1,4)的二维数组 - 广播机制会自动将两个数组扩展为相同的
(2,4)形状后执行运算,全程不需要创建实际的重复数组,内存占用更低
支持所有四则运算的示例
# 加法 add_result = b[:, None] + a print(add_result) # [[ 6 7 8 9] # [ 7 8 9 10]] # 减法 sub_result = b[:, None] - a print(sub_result) # [[ 4 3 2 1] # [ 5 4 3 2]] # 除法(确保除数不为0即可) div_result = b[:, None] / a print(div_result) # [[5. 2.5 1.66666667 1.25 ] # [6. 3. 2. 1.5 ]]
内容的提问来源于stack exchange,提问作者mauro
相关产品推荐
相关产品推荐

