2010年11月10日 星期三 22:08
大家好
我正在学
python
,用到了numpy
我现在有一个数组(不知道是不是应该叫数组)
比如 a = numpy.array( [ [111, 54, 555], [0, 1, 2 ] ] )
我想让[111, 54, 555]这一组数从小到大排序,[0, 1, 2]这组数还是要跟以前那个数在同一列。
也就是说最后的结果希望是:
array ( [ [54, 111, 555]
[ 1, 0, 2] ] )
之前想过用字典来处理,但是在[111, 54, 555]这组数里面可能出现相同的值
不知道哪位能
帮忙
解决
一下,谢谢!
2010年11月10日 星期三 23:31
我有一个比较麻烦的方案
alist = zip([111,54,555],[0,1,2])
alist.sort()
alist = [[x[0] for x in alist],[x[1] for x in alist]]
然后测试下print alist就是你想要的结果了。
2010年11月11日 星期四 09:45
不麻烦,谢谢了!
2010年11月11日 星期四 10:18
alist = zip([111,54,555],[0,1,2])
alist.sort()
最后一步改一下 alist = zip(*[[x[0],x[1]] for x in alist]) 比较易读,貌似效率也更高一点
2010年11月11日 星期四 10:52
之前很少用到zip,以至于之前都不知道还可以带*号,学习了
2010年11月12日 星期五 08:51
这里*号的语法做什么解释呢。
2010年11月14日 星期日 10:21
用argsort获得排序下标,然后再用下标创建一个新数组:
a[:,numpy.argsort(a[0,:])]
2010年11月14日 星期日 19:54
学习了,谢谢
Zeuux © 2024
京ICP备05028076号