失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python定义数组是带指针_在cython中声明numpy数组和c指针

python定义数组是带指针_在cython中声明numpy数组和c指针

时间:2024-08-10 02:33:15

相关推荐

python定义数组是带指针_在cython中声明numpy数组和c指针

在我的代码中,我通常使用numpy数组在方法和类之间进行接口。为了优化程序的核心部分,我使用cython和那些numpy数组的c指针。不幸的是,我目前声明数组的方式相当长。在

例如,假设我有一个方法,它应该返回一个numpy数组someArrayNumpy,但是在函数指针内部,应该使用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

如您所见,对于一个数组来说,这需要3行代码,而且通常我必须声明更多的这些数组。在

有没有更紧凑/更聪明的方法来实现这一点?我想我错过了什么。在

编辑:

因此,因为这是由J·马丁诺特·拉加德(J.MartinotLagarde)提出的,所以我计时了C点和“numpy指针”。代码基本上是

^{pr2}$

以及for ii in range(someArraySize):

someArrayBuff[ii] += 1

根据上面的定义,我添加了“ndim=1,mode='c'”只是为了确保。结果为someArraySize=1e8(时间单位:毫秒):testMartinot("cPointers")

531.276941299

testMartinot("numpyPointers")

498.730182648

这是我从以前/不同的基准中大致记得的。在

如果觉得《python定义数组是带指针_在cython中声明numpy数组和c指针》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。