相关疑难解决方法(0)

使用Python/NumPy对数组中的项目进行排名

我有一个数字数组,我想创建另一个数组,表示第一个数组中每个项目的排名.我正在使用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)

有没有更好/更快的方法避免两次排序数组?

python sorting numpy

82
推荐指数
6
解决办法
7万
查看次数

在matplotlib中,如何绘制多个数据集的条形图以将最小的条放在前面?

我想将多个数据集放在条形图上并阻止较小的条形被较大的条形遮挡,我不想抵消它们。例如,

酒吧(0, 1。)

酒吧(0, 2。)

仅显示高度为 2.0 的第二条,第一个条被隐藏。有没有办法让 matplotlib 在顶部绘制最小的条形?注意我不想要堆叠条形图或在 x 方向上偏移条形。

我可以按条形高度对所有数据集中的所有数据进行排序,并按此顺序单独绘制每个条形图,但我更喜欢单独绘制每个条形图,而不是依次绘制每个数据集 有谁知道这样做的方法?

非常感谢

python plot matplotlib

4
推荐指数
1
解决办法
4225
查看次数

Numpy.argsort-看不出什么问题

我正在尝试使用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)

python arrays sorting numpy

1
推荐指数
2
解决办法
3916
查看次数

标签 统计

python ×3

numpy ×2

sorting ×2

arrays ×1

matplotlib ×1

plot ×1