如何在numpy数组中实现列间向量化加法?求高效实现方式
对NumPy数组列执行向量化加法的最快方式
你写的Python循环虽然能实现功能,但完全没利用NumPy的向量化优势——Python级别的循环在处理大规模数组时效率极低。最快的实现方式直接用NumPy的切片操作完成元素级加法:
import numpy ary = numpy.array([[1,2,3],[3,4,5],[5,6,7],[7,8,9],[9,10,11]]) # 直接对整列执行向量化加法 ary[:, 0] += ary[:, 1]
效果说明
执行后数组第一列的每个元素都会加上对应行第二列的元素,最终结果为:
[[ 3 2 3] [ 7 4 5] [11 6 7] [15 8 9] [19 10 11]]
为什么这是最快的?
NumPy的切片操作直接在底层(C语言级别)处理连续内存块的元素,完全避开了Python循环的解释器开销。对于大规模数组,这种向量化操作的速度会比你写的循环快几个数量级——数组越大,优势越明显。
内容的提问来源于stack exchange,提问作者Brad
相关产品推荐
相关产品推荐

