3

我正在使用 Python C-API 将一些 C++ 代码包装为 Python 包。最后,我必须在一个 numpy 数组中反转一个轴,即做

x = x[:, ::-1]

有没有办法使用 Numpy C-API 做到这一点?我知道有转置和交换轴的例程,但我没有找到很多关于索引的信息。有任何想法吗?谢谢,安迪

4

1 回答 1

3

由于 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()orPy_XDECREF()宏在代码中创建的任何引用的引用计数。http://docs.python.org/c-api/refcounting.html

于 2011-08-09T13:56:58.590 回答