我有一个相当大的一维numpy数组,我想在一个切片上应用一些排序,并检索置换向量以进行其他处理。在
但是ndarray.排序()(这是一个就地操作)方法不返回此向量,我可以使用ndarray.argsort公司()方法得到排列向量并用它来排列切片。但是,我想不出该怎么做。在
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?在
^{pr2}$致以最良好的祝愿!在
弗朗索瓦
要回答您的问题:为什么“分配到视图”不会修改原始视图:
您需要将
Vslice = Vslice[iperm]
更改为Vslice[:] = Vslice[iperm]
,否则您将为Vslice
分配一个新值,而不是更改Vslice
中的值:相关问题 更多 >
编程相关推荐