c语言指针生成numpy数组,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. Martinot-Lagarde问我,我指的是C指针和“numpy指针”.代码基本上是

for ii in range(someArraySize):

someArrayPointers[ii] += 1

for ii in range(someArraySize):

someArrayBuff[ii] += 1

与上面的定义,但我添加“ndim = 1,mode =’c’”只是为了确保.结果是someArraySize = 1e8(以ms为单位的时间):

testMartinot("cPointers")

531.276941299

testMartinot("numpyPointers")

498.730182648

这是我从之前/不同的基准测试中粗略记住的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值