2011-08-09 13 views
3

私はPython C-APIを使用して、C++コードをPythonパッケージとしてラッピングしています。最後に 、私がやってすなわちnumpyの配列の軸を、逆にする必要がありC-APIを使用したNumpy配列の軸の逆転

X = X [:, :: - 1]

がnumpyのC-APIを使用してこれを行うにはいくつかの方法があります? 私は、軸の入れ替えとスワップのルーチンがあることを知っていますが、インデックスについてはあまり見つけていません。 アイデア おかげで、 アンディ

+0

あなたは単に配列の 'reverse()'メソッドを呼び出すことができますか? – agf

+0

ナンシーアレイにはリバースメソッドがありません。リバースはafaik - ohと明らかにpython配列のリストだけで動作します。しかし、これらは単純なオブジェクトであり、numpy配列などのnd配列ではありません。 –

+0

'slice'オブジェクトの作成はどうですか? – agf

答えて

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の使用方法にまで読んでお勧めしますあなたが普通のPythonに慣れていれば混乱するかもしれないからです。たとえば、Py_DECREF()またはPy_XDECREF()のマクロを使用してコード内に作成された参照の参照カウントを明示的に減らす必要があります。 http://docs.python.org/c-api/refcounting.html

関連する問題