整行numpyarray索引操作是否可以进行cythonized?

2024-04-28 08:57:12 发布

您现在位置:Python中文网/ 问答频道 /正文

Cython documentation under ^{}gotcha部分,它说:

This efficient indexing only affects certain index operations, namely those with exactly ndim number of typed integer indices.

这是否意味着

f[:, w] = something

没有优化?你知道吗


Tags: onlyindexdocumentationwiththiscythonoperationsunder
1条回答
网友
1楼 · 发布于 2024-04-28 08:57:12

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

然而Cython能显著加快的是:访问数组的单个元素。在Python代码中,这是一个非常低效的操作,因为在访问元素时必须“装箱为Python对象”。当使用“类型化整数索引的确切ndim数”时,Cython可以避免这种“装箱”。你知道吗

所以这并不是说f[:,w]没有得到优化。它已经被numpy优化了。赛顿在那里没有多大进步。你知道吗

相关问题 更多 >