在Cython documentation under Efficient Indexing
gotcha
部分,它说:
这种有效的索引仅影响某些索引操作,即 那些具有
ndim
个类型的整数索引的人。
这是否意味着像
这样的操作f[:, w] = something
未优化?
答案 0 :(得分:2)
它可能意味着“优化[与纯Python代码相比]”。有不同种类的切片,其中大多数已经在Python中非常快,只是没有太多你可以加快。例如,如果您使用f[:,w]
,您将获得数组f
的视图。它涉及一些开销,因为必须创建一个“视图”但它已经非常快,因为它(不包括某些高级索引操作)只是一个内存视图。
然而,Cython可以显着加速的是:访问数组的单个元素。这在Python代码中是一个非常低效的操作,因为该元素在访问时必须“装箱为Python对象”。当使用“完全ndim数量的类型化整数索引”时,Cython可以避免这种“装箱”。
所以不像f[:,w]
没有优化。 numpy已经优化了。 Cython无法改善(很多)那里。