python定义数组是带指针_在cython中声明numpy数组和c指针
在我的代碼中,我通常使用numpy數(shù)組在方法和類之間進行接口。為了優(yōu)化程序的核心部分,我使用cython和那些numpy數(shù)組的c指針。不幸的是,我目前聲明數(shù)組的方式相當(dāng)長。在
例如,假設(shè)我有一個方法,它應(yīng)該返回一個numpy數(shù)組someArrayNumpy,但是在函數(shù)指針內(nèi)部,應(yīng)該使用someArrayPointers來提高速度。我通常這樣說:cdef:
numpy.ndarray someArrayNumpy = numpy.zeros(someArraySize)
numpy.ndarray[numpy.double_t, ndim=1] someArrayBuff = someArrayNumpy
double *someArrayPointers = someArrayBuff.data
[... some Code ...]
return someArrayNumpy
如您所見,對于一個數(shù)組來說,這需要3行代碼,而且通常我必須聲明更多的這些數(shù)組。在
有沒有更緊湊/更聰明的方法來實現(xiàn)這一點?我想我錯過了什么。在
編輯:
因此,因為這是由J·馬丁諾特·拉加德(J.MartinotLagarde)提出的,所以我計時了C點和“numpy指針”。代碼基本上是
^{pr2}$
以及for ii in range(someArraySize):
someArrayBuff[ii] += 1
根據(jù)上面的定義,我添加了“ndim=1,mode='c'”只是為了確保。結(jié)果為someArraySize=1e8(時間單位:毫秒):testMartinot("cPointers")
531.276941299
testMartinot("numpyPointers")
498.730182648
這是我從以前/不同的基準中大致記得的。在
總結(jié)
以上是生活随笔為你收集整理的python定义数组是带指针_在cython中声明numpy数组和c指针的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: keras保存模型_onnx+tenso
- 下一篇: python语句结束标志_jinja2.