【发布时间】:2011-01-29 20:00:57
【问题描述】:
给定一个数组'a',我想按列对数组进行排序sort(a, axis=0) 对数组做一些事情,然后撤消排序。我的意思不是重新排序,而是基本上颠倒每个元素的移动方式。我假设argsort() 是我需要的,但我不清楚如何使用argsort() 的结果对数组进行排序,或者更重要的是应用argsort() 的反转/反转
这里有更多细节
我有一个数组a,shape(a) = rXc 我需要对每一列进行排序
aargsort = a.argsort(axis=0) # May use this later
aSort = a.sort(axis=0)
现在平均每一行
aSortRM = asort.mean(axis=1)
现在用行均值替换一行中的每个列。 还有比这更好的方法吗
aWithMeans = ones_like(a)
for ind in range(r) # r = number of rows
aWithMeans[ind]* aSortRM[ind]
现在我需要撤消我在第一步中所做的排序。 ????
【问题讨论】:
-
为什么你不能在任何转换之前复制数组:
a.copy()或使用aSort = numpy.sort(axis=0)(这将返回排序后的副本)?顺便说一句,a.sort()什么也不返回,因此没有必要分配它的返回值。 -
@J.F.塞巴斯蒂安,谢谢你是对的,我修好了
标签: python arrays sorting numpy