我正在使用Python C-API将一些C++代码包装为Python包。最后,我必须在numpy数组中反转一个轴,即做
X= x:,::-1
有没有什么方法可以使用Numpy C-API来做到这一点呢?我知道有转置和交换轴的例程,但我还没有找到太多关于索引的东西。有什么想法吗?谢谢,安迪
发布于 2011-08-09 21:56:59
由于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,我建议您首先阅读有关如何使用C API的知识,因为如果您只习惯于使用常规的Python,那么它可能会让人感到困惑。例如,必须显式地递减使用Py_DECREF()
或Py_XDECREF()
宏在代码中创建的任何引用的引用计数。http://docs.python.org/c-api/refcounting.html
https://stackoverflow.com/questions/6994725
复制相似问题