信不信由你,在分析当前代码后,执行numpy数组还原的重复操作将占用大量运行时间。我现在拥有的是基于视图的常见方法:
reversed_arr = arr[::-1]
还有其他方法可以更有效地执行此操作,还是我对不切实际的numpy性能的痴迷所致的幻觉?
arr
是一个numpy数组。
f2py
是你的朋友!通常值得用另一种语言编写算法的性能关键部分(尤其是在科学计算中),然后从python调用它。祝好运!
arr[::-1]
:github.com/numpy/numpy/blob/master/numpy/lib/twodim_base.py。搜索def flipud
。该函数实际上是四行。
arr[::-1]
只是返回了相反的视图。它尽可能快,并且不依赖数组中项目的数量,因为它只是改变了步伐。您要反转的实际上是一个numpy数组吗?