python-使用C-API在Numpy数组中反转轴
作者:互联网
我正在使用Python C-API将一些C代码包装为Python包.
最后,我必须反转一个numpy数组中的轴,即
x = x [:, ::-1]
是否可以使用Numpy C-API进行此操作?
我知道有一些用于转置和交换轴的例程,但是我对索引的了解并不多.
有任何想法吗?
谢谢,
安迪
解决方法:
由于Python中的索引只是调用对象的__getitem __()方法的语法糖(即x [:, ::-1]等效于x .__ getitem __((slice(None),slice(None,None,-1)) )),您只需要构造所需的切片对象,并以正确的顺序将它们存储在元组中,然后使用该元组作为参数调用对象的__getitem __()方法.
您将需要查看以下链接:
http://docs.python.org/c-api/slice.html#PySlice_New
http://docs.python.org/c-api/tuple.html#PyTuple_Pack
http://docs.python.org/c-api/object.html#PyObject_GetItem
但是,我建议您首先阅读有关如何使用C API的信息,因为如果您只习惯使用常规的Python,可能会使您感到困惑.例如,必须显式地减少使用Py_DECREF()或Py_XDECREF()宏在代码中创建的所有引用的引用计数. http://docs.python.org/c-api/refcounting.html
标签:python-c-api,python,numpy 来源: https://codeday.me/bug/20191208/2088729.html