3
我有一個相當大的一維numpy數組,我希望對一個切片就地應用一些排序並檢索其他處理的排列矢量。numpy arrray的就地排列
但是,ndarray.sort()(它是一個就地操作)方法不會返回這個向量,我可以使用ndarray.argsort()方法來獲取置換向量並使用它來置換slice。但是,我無法弄清楚如何在原地進行。
Vslice = V[istart:istop] # This is a view of the slice
iperm = Vslice.argsort()
V[istart:istop] = Vslice[iperm] # Not an inplace operation...
輔助問題:爲什麼下面的代碼不會修改V,因爲我們正在處理V的視圖?
Vslice = Vslice[iperm]
祝好!
弗朗索瓦
謝謝!簡單... – frongere
請注意,即使結果寫回到原始數組,操作也不會「就地」發生:按照排序順序創建子數組的副本,然後寫回其內容到原始數組。 – Jaime
@Jaime確實如此。這本應該回答這篇文章中的最後一個問題 –