我有一个数字数组,我想创建另一个数组,表示第一个数组中每个项目的排名.我正在使用Python和NumPy.
例如:
array = [4,2,7,1]
ranks = [2,1,3,0]
Run Code Online (Sandbox Code Playgroud)
这是我提出的最佳方法:
array = numpy.array([4,2,7,1])
temp = array.argsort()
ranks = numpy.arange(len(array))[temp.argsort()]
Run Code Online (Sandbox Code Playgroud)
有没有更好/更快的方法避免两次排序数组?
我想将多个数据集放在条形图上并阻止较小的条形被较大的条形遮挡,我不想抵消它们。例如,
酒吧(0, 1。)
酒吧(0, 2。)
仅显示高度为 2.0 的第二条,第一个条被隐藏。有没有办法让 matplotlib 在顶部绘制最小的条形?注意我不想要堆叠条形图或在 x 方向上偏移条形。
我可以按条形高度对所有数据集中的所有数据进行排序,并按此顺序单独绘制每个条形图,但我更喜欢单独绘制每个条形图,而不是依次绘制每个数据集 有谁知道这样做的方法?
非常感谢
我正在尝试使用argsort函数对一个numpy数组进行排序。
不幸的是,这是行不通的,我不明白为什么:(
代码是:
import numpy as np
distance = np.array([38.26, 33.01, 32.33, 30.77, 37.96, 44.37, 32.72, 36.56,
27.77, 33.62, 42.85, 34.6 , 32.04, 27.49, 49.64, 51.85,
44.37, 38.26, 46.93, 40.45, 40.72, 39.7 , 34.12, 36.9 ,
34.6 , 34. , 36.56, 39.29, 38.6 , 32.33, 32.65, 40.72,
43.85, 47.89, 33.62, 35.24, 42.5 , 36.97, 28.36, 37.57,
37.25, 25.54, 29.6 , 37.25, 40.45, 32.04, 40.45, 31.4 ,
41.78, 35.89, 59.24, 51.2 , 57.22, 35.54, 50.09, 40.33,
50.58, 29.77, 51.97, 34.33, 29. …Run Code Online (Sandbox Code Playgroud)