【发布时间】:2019-02-13 00:12:34
【问题描述】:
我有(在我看来)一个相当清晰的例子,它使用 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 文档中给出的例子——在这种情况下它肯定可以工作吗?
感谢您的帮助!
【问题讨论】: