我(用我看来)有一个非常清晰的例子,它带有numpy argsort,它在产生奇怪的结果。如果我创建一个字符数组示例:
letters = np.array([['b','a','c'],
['c','a','b'],
['b','c','a']]).astype(str)
然后我正在寻找对行进行排序(并保留排序顺序,以备后用)。我从argsort获得的输出是
sort_seq = np.argsort(letters, axis=1)
sort_seq
array([[1, 0, 2],
[1, 2, 0],
[2, 0, 1]])
这似乎使第一行正确,但其他行却没有。如果我用它来重建数组,那么我得到:
output = np.full_like(letters, '')
np.put_along_axis(output, sort_seq, letters,axis=1)
output
给出
array([['a', 'b', 'c'],
['b', 'c', 'a'],
['c', 'a', 'b']], dtype='<U1')
如果我在这里和其他站点上查看,我会发现多维数组的argsorting有时并不总是很好。但是此示例似乎与numpy文档中给出的示例非常接近-当然可以在这种情况下起作用了吗?
感谢您的帮助!
答案 0 :(得分:2)
对我很好:
<input type="file" accept="video/*">
<video controls></video>
这可能是我们如何理解In [88]: letters = np.array([['b','a','c'],
...: ['c','a','b'],
...: ['b','c','a']]).astype(str)
...: sort_seq = np.argsort(letters, axis=1)
...:
In [89]: np.take_along_axis(letters, sort_seq, axis=1)
Out[89]:
array([['a', 'b', 'c'],
['a', 'b', 'c'],
['a', 'b', 'c']], dtype='<U1')
的问题。是“接受”订单还是“投入”订单?
要使用argsort
,我们必须使用双重排序
put