2017-04-09 29 views

回答

2

這可能意味着「優化[與純Python代碼相比]」。有不同種類的切片,其中大多數在Python中已經非常快,只有很少的速度可以加速。例如,如果您使用f[:,w],您將看到數組f。它涉及一些開銷,因爲必須創建「視圖」,但它已經非常快,因爲它(不包括某些高級索引操作)只是一個內存視圖。

然而,Cython可以顯着加速的是:訪問數組中的單個元素。這是Python代碼中非常低效的操作,因爲元素在訪問時必須「作爲Python對象裝箱」。當使用「完全ndim類型的整數索引」時,Cython可以避免這種「裝箱」。

所以它不是像f[:,w]沒有優化。 numpy已經優化了。 Cython無法在那裏提高(很多)。

+0

':'是'切片(無)'。我認爲cython會繼續使用python/numpy調用,而不是用純c代碼替換它。 – hpaulj

+0

儘管鍵入的記憶體支持切片和視圖。 – hpaulj

+0

@hpaulj是的,他們明確提到,在鏈接教程中,原因是「您可以繼續使用Python對象進行復雜的動態切片等,就像數組未輸入時一樣。」不知道這如何與記憶體相關,但我想他們支持大部分類似數組的切片操作? – MSeifert

相關問題