我正在使用Python C-API將一些C++代碼封裝爲Python包。 最後,我必須扭轉在numpy的陣列的軸線,即做使用C-API在Numpy數組中反向軸
X = X [:, :: - 1]
是否有這樣做使用numpy的C-API的某種方式? 我知道有用於轉置和交換軸的例程,但我沒有找到太多有關索引的內容。 任何想法? 謝謝, 安迪
我正在使用Python C-API將一些C++代碼封裝爲Python包。 最後,我必須扭轉在numpy的陣列的軸線,即做使用C-API在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
你可以調用數組的'reverse()'方法嗎? – agf
Numpy數組沒有反向方法,對吧?反向僅適用於列表afaik - 哦,顯然在python數組上。但這些只是扁平的對象,而不是像numpy數組那樣的數組。 –
創建一個'slice'對象怎麼樣? – agf