分析一段 numpy 代码表明我大部分时间都花在这两个函数上
numpy/matrixlib/defmatrix.py.__getitem__:301
numpy/matrixlib/defmatrix.py.__array_finalize__:279
这是 Numpy 的源代码:
- https://github.com/numpy/numpy/blob/master/numpy/matrixlib/defmatrix.py#L301
- https://github.com/numpy/numpy/blob/master/numpy/matrixlib/defmatrix.py#L279
问题一:
__getitem__
似乎每次我使用类似的东西时都会被调用,如果不是整数而是切片my_array[arg]
,它会变得更加昂贵。arg
有什么方法可以加快对数组切片的调用?
例如在
for i in range(idx): res[i] = my_array[i:i+10].mean()
问题2:
究竟什么时候__array_finalize__
被调用,如何通过减少对该函数的调用次数来加快速度?
谢谢!