面试题答案
一键面试代码实现
import numpy as np
# 假设已有二维矩阵A和B
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
result = np.dot(A, B)
print(result)
高效原因
- 底层优化:NumPy使用C语言编写,其底层代码经过高度优化,在执行矩阵乘法时,能充分利用现代处理器的特性,如缓存、多核心等,而纯Python列表嵌套实现是Python的解释执行,效率远低于C语言编译执行。
- 矢量化操作:NumPy的矩阵乘法函数(如
np.dot
)是矢量化操作,它可以对整个数组进行操作,避免了Python中显式的循环,减少了循环带来的开销,提高了运算速度。而纯Python列表嵌套实现需要多层循环来逐个处理元素,开销较大。 - 内存管理:NumPy在内存中以连续的方式存储数组数据,在进行矩阵乘法时,数据访问效率更高。而Python列表是动态分配内存,每个元素可能存储在不同的内存位置,增加了内存访问的开销。