2011-03-01 68 views

回答

1

您的帖子中有輕微的不一致;我假設你的標題描述了你想要的東西。看看Python API文檔,PyArray_NewFromDescr只接受一個指向預分配內存的指針,所以答案几乎肯定不是。看來你可能會能夠巧妙地使用strides參數來實現這一點;但即便如此,非連續的內存也必須以常規方式進行佈局。

此外,這顯然不是numpy希望你做的事情,從PyArray_CheckStrides來看,這似乎假定一塊連續的內存塊。

1

簡答題,沒有。

Numpy希望所有的數據都能以簡單的步驟進行佈置。在遍歷數組時,爲了在維度中前進,它將一個常量(該維度的步幅大小)添加到內存中的位置。因此,除非定期佈置2-d切片(例如,更大的3-D陣列的每隔一行),numpy將需要複製數據。

如果你確實有這樣的訂單,你可以做你想要的。您需要創建一個PyArray結構,其中數據指向第一項,步長對佈局是正確的,descr也是正確的。最重要的是,您需要將基本成員設置爲另一個python對象,以便在該視圖存在時保留大量內存。

相關問題