可以将整行NumpyArrays索引操作进行cython化吗?

时间:2017-04-09 02:33:24

标签: python arrays numpy cython

Cython documentation under Efficient Indexing gotcha部分,它说:

  

这种有效的索引仅影响某些索引操作,即   那些具有ndim个类型的整数索引的人。

这是否意味着像

这样的操作
f[:, w] = something

未优化?

1 个答案:

答案 0 :(得分:2)

它可能意味着“优化[与纯Python代码相比]”。有不同种类的切片,其中大多数已经在Python中非常快,只是没有太多你可以加快。例如,如果您使用f[:,w],您将获得数组f的视图。它涉及一些开销,因为必须创建一个“视图”但它已经非常快,因为它(不包括某些高级索引操作)只是一个内存视图。

然而,Cython可以显着加速的是:访问数组的单个元素。这在Python代码中是一个非常低效的操作,因为该元素在访问时必须“装箱为Python对象”。当使用“完全ndim数量的类型化整数索引”时,Cython可以避免这种“装箱”。

所以不像f[:,w]没有优化。 numpy已经优化了。 Cython无法改善(很多)那里。