我有一个看起来像这样的Theano数组:
0 43 1
4 8 5
0 41 8
4 8 4
我想基于第一列对行进行排序,对于第一列中具有相同值的行,基于第二列进行排序等等...在此示例中有3列,但理想情况下我是&# 39; d喜欢使用任意数量的列的方法。
预期结果是:
0 41 8
0 43 1
4 8 4
4 8 5
编辑:单元格可以有非常大的值(int64),因此将列组合在一起对我来说似乎不太可行。
答案 0 :(得分:0)
在numpy中计算Theano的订单列表会更好,因为必须处理绑定的场景,这可能需要if语句。
获得订单列表后,将其转换为带有dtype =' int64'的theano ivector或vector。或者' int32'并将其用作原始矩阵的索引。
e.g。
0 43 1
A = 4 8 5
0 41 8
4 8 4
在nump中计算订单列表,这会导致b = [2,0,3,1]
A = theano.matrix()
order_ls = theano.tensor.ivector(name='orderlist')
reordered_matrix = A[order_ls]
获取重新排序矩阵的值,可以创建像
这样的theano函数get_value = theano.function([A, order_ls], reordered_matrix)
答案 1 :(得分:-2)
您可以使用sorted
进行词法排序,假设您的数据格式一致。
假设它存储在文本文件中,您可以这样做:
with open('foo.txt', 'r') as inputfile:
lines = inputfile.read().splitlines()
with open('bar.txt', 'w') as outputfile:
outputfile.write('\n'.join(sorted(lines)))
为什么呢?因为空格在词法排序中位于数字之前,所以' 8'
小于'10'
。 ASCII是专为此类排序而设计的。