我有一个形状为[1,500]的输入数组:
[[0] [1] [2] ... [499]]
与形状为[1,500]的随机输出数组组合为:
[[22] [16] [11] ... [51]]
我尝试过使用concatenate或者像这样添加(一次1个):
inAndout = np.append(soloInput, outputMatrix, axis=1) #or:
inAndout = np.append(soloInput, outputMatrix, axis=1) #Commented 1 out each time
两者的输出与print(inAndOut)时的表格相当不错:
[[0 22] [1 16] [2 11] ... [499 51]] #Notice no','仅添加数组之间的间距
然后我使用:
sortedInput = np.sort(inAndout, axis=0)
结果是:
[[ 0 11 ] [ 1 16 ] [ 2 22 ] ... [ 499 51 ]] #It输入和输出
当我使用axis = 1时,它会产生一个未排序的矩阵。
我想要的是它只是根据输出进行排序,或者只根据输入进行排序:
[[ 0 22] [ 1 16] [ 2 22] ... [ 499 51 ]]#按输入排序 [[2 11 ] [1 16 ] [0 22 ] ... [499 51 ]]#按输出排序
非常感谢任何帮助!
答案 0 :(得分:1)
您可以使用argsort
返回对输入或输出进行排序的索引,然后使用索引对所有列重新排序:
按输入排序:
inAndout[inAndout[:,0].argsort(),:]
按输出排序:
inAndout[inAndout[:,1].argsort(),:]
实施例:
inAndout = np.array([[0, 22],[1, 16],[2, 11],[499, 51]])
inAndout
#array([[ 0, 22],
# [ 1, 16],
# [ 2, 11],
# [499, 51]])
inAndout[inAndout[:,0].argsort(),:]
#array([[ 0, 22],
# [ 1, 16],
# [ 2, 11],
# [499, 51]])
inAndout[inAndout[:,1].argsort(),:]
#array([[ 2, 11],
# [ 1, 16],
# [ 0, 22],
# [499, 51]])