需求:以某行或某列为 key ,对列或行顺序进行整体平移, 例如以下矩阵
[[1.2, 0.5, 0.1, 0.9],
[ 3, 5, 8, 6]]
如果以首行为 key ,期望获得结果为
[[0.1, 0.5, 0.9, 1.2],
[ 8, 5, 6, 3]]
使用代码是 np.argsort()
import numpy as np
d = np.array([[1.2,0.5,0.1,0.9],[3,5,8,6]], dtype=np.float32)
print(d)
print(d[0])
print(np.argsort(d[0]))
### output:
[[1.2 0.5 0.1 0.9]
[3. 5. 8. 6. ]]
[1.2 0.5 0.1 0.9]
[2 1 3 0]
其中 argsort 结果不正确,如果 argsort 输出结果是标号,那么应该输出[3,1,0,2]才对,印象里以前用 numpy 排序就是 argsort 搞的,这次知道为啥用不对了,有无大佬帮看一眼。
另问一下逆序排序的办法,stackoverflow 上说用 np.fliplr()反转结果,感觉不太对啊
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.