相关疑难解决方法(0)

如何返回排序列表的索引?

我需要对列表进行排序,然后返回一个列表,其中包含列表中已排序项的索引.例如,如果我要排序的列表是[2,3,1,4,5],我需要[2,0,1,3,4]返回.

这个问题是在字节上发布的,但我想我会在这里重新发布. http://bytes.com/topic/python/answers/44513-sorting-list-then-return-index-sorted-item

我特别需要根据对象的属性对对象列表进行排序.然后,我需要重新排序相应的列表以匹配新排序列表的顺序.

有没有办法做到这一点?

python

113
推荐指数
4
解决办法
16万
查看次数

使用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万
查看次数

理解order()函数

我试图了解该order()功能的工作原理.我的印象是它返回了索引的排列,当排序时,它会对原始向量进行排序.

例如,

> a <- c(45,50,10,96)
> order(a)
[1] 3 1 2 4
Run Code Online (Sandbox Code Playgroud)

我本来希望这会返回c(2, 3, 1, 4),因为排序的列表将是10 45 50 96.

有人能帮我理解这个函数的返回值吗?

sorting r r-faq

81
推荐指数
4
解决办法
13万
查看次数

在基本python中等效Numpy.argsort()?

在那里,做关于Python的内置函数python.array什么argsort()上呢numpy.array

python numpy

47
推荐指数
3
解决办法
3万
查看次数

如何找到二维数组中每一行的最大值?

例如,我有这个二维数组:

[
    [
     0.0,
     0.24320757858085434,
     0.14893361727523413,
     0.29786723455046826,
     0.18838778030301612,
     0.12160378929042717
    ],
    [
     0.23717478210768014,
     0.0,
     0.16770789675478251,
     0.20539938644228997,
     0.25981195646349819,
     0.1299059782317491
    ],
    [
     0.21681956134183847,
     0.250361664212574,
     0.0,
     0.23178986094050727,
     0.16390018248131957,
     0.13712873102376066
    ],
    [
     0.2933749527592357,
     0.20744741852633861,
     0.15681550844086434,
     0.0,
     0.18554661183269694,
     0.15681550844086434
    ],
    [
     0.20305810393286577,
     0.28716752453162431,
     0.12135042758887897,
     0.20305810393286577,
     0.0,
     0.18536584001376513
    ],
    [
     0.17877693623386351,
     0.19584032147389943,
     0.13848001934394774,
     0.23407395508684939,
     0.25282876786143976,
     0.0
    ]
]
Run Code Online (Sandbox Code Playgroud)

它给出了概率集。如何找到每一行的最佳概率?还有什么方法可以在不改变元素位置的情况下找到例如第二、第三最佳概率?

python arrays numpy list python-2.7

6
推荐指数
2
解决办法
6251
查看次数

按长度排序列表列表时跟踪原始标记

您可以按长度对列表进行排序,如下所示:

l1 = [1,2,3]
l2 = [1,2,3]
l3 = [1,2]
lists = [l1, l2, l3]
sorted_lists = sorted(lists, key=len)
print sorted_lists  #[[1,2], [1,2,3], [1,2,3]]
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何跟踪标记,然后匹配sorted_lists原始列表名称的内容l1,l2l3.

很接近,但我不确定在按长度排序时如何实现解决方案.

python sorting list nested-lists

5
推荐指数
1
解决办法
477
查看次数

如何返回列表中每个元素的顺序索引?

比方说我有一个数字列表L=[50, 10, 30],在Python中我想返回一个列表,给出每个元素的顺序索引L,这将是这个输出:[2, 0, 1].

尽管这似乎是一个简单的任务,在这个网站(很多问题,在这里 在这里,并在这里例如)注重反过来,这意味着从指数排序列表的观点:[1, 2, 0],这不是我想要的.

谢谢,

编辑:关于重复,我希望他们也被计算(按照外观顺序绘制).[50,30,10,30]会给[3,1,0,2]

python sorting indexing

5
推荐指数
1
解决办法
115
查看次数

如何获取按降序排列的数组的索引

我有一个简单的值列表,我需要其中的索引按原始值顺序(最大到最小)排序。

我们假设列表是

maxList = [7, 3, 6, 9, 1, 3]
Run Code Online (Sandbox Code Playgroud)

结果应该是:

indexedMaxList = [3, 0, 2, 1, 5, 4]
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的:

def ClusteringOrder(maxList):
    sortedMaxList = maxList.copy()
    sortedMaxList.sort(reverse=True)
    indexedMaxList = []
    for i in range(len(maxList)):
        indexedMaxList.append(maxList.index(sortedMaxList[i]))
    return(indexedmaxList)
Run Code Online (Sandbox Code Playgroud)

问题很明显,这样做会返回第一次出现重复值的索引。在这种情况下,双 3 将返回 1 两次,因此结果将是:

indexedMaxList = [3, 0, 2, 1, 1, 4]
Run Code Online (Sandbox Code Playgroud)

有没有什么简单的方法可以恢复实际位置?

python sorting python-3.x

5
推荐指数
2
解决办法
5060
查看次数

Python中deque中随机访问的时间复杂度

我想知道Python中deque的get操作的时间复杂性.

我知道它是作为Python中的双重链接实现的.这是否意味着它的时间复杂度是O(n)?

python big-o deque

3
推荐指数
1
解决办法
1655
查看次数

根据多个条件对python列表进行排序

我有一个列表,其元素是带有值和类型字段的字典,即:

my_list = [{'val':5, 'type':0},{'val':6, 'type':2},{'val':2, 'type':1},{'val':9, 'type':0}]
Run Code Online (Sandbox Code Playgroud)

我想基于该type字段以降序对列表进行排序,并基于该字段在每种类型中对列表进行排序value,并获得一个具有相应排序索引和排序矢量的矢量。

我知道如何使用lambda函数针对单个条件执行此操作,即:

sorted_list = sorted(my_list, key=lambda k: k['type'], reverse=True) 
Run Code Online (Sandbox Code Playgroud)

但是如何将其扩展到多个条件?

所需输出

 sorted_list = [{'val':6, 'type':2},{'val':2, 'type':1},{'val':9, 'type':0},{'val':5, 'type':0}]

 sorted_idxs = [1, 2, 3, 0]`, such that `[my_list[k] for k in sorted_idxs]==sorted_list
Run Code Online (Sandbox Code Playgroud)

python sorting lambda

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

获取列表升序的索引

我知道这个问题已经问了一百次了,但答案似乎总是“使用 numpy 的 argsort”。但是,要么我误解了大多数人的要求,要么问题的答案不正确。无论如何,我希望获得列表升序的索引。措辞令人困惑,因此举个例子,给定一个列表,[4, 2, 1, 3]我希望得到一个列表[3, 1, 0, 2]。最小的项目是1,所以它得到索引0,最大的项目是,4所以它得到索引3。在我看来,argsort经常有人建议这样做,但似乎并没有这样做。

from numpy import argsort

l = [4, 2, 1, 3]
print(argsort(l))
# [2, 1, 3, 0]
# Expected [3, 1, 0, 2]
Run Code Online (Sandbox Code Playgroud)

很明显 argsort 正在做其他事情,那么它实际上在做什么,它与预期的行为有何相似之处,以至于它经常(错误地)被建议?而且,更重要的是,我怎样才能获得所需的输出?

python sorting numpy list python-3.x

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

如何按一键对字典值进行排序?

全部,

我正在努力通过单个键对包含每个键的多个值的字典进行排序。我有以下字典

{ 
     'time': [2, 1, 3], 
     'x_coordinates': [3, 5, 4], 
     'y_coordinates': [6, 7, 8]
}
Run Code Online (Sandbox Code Playgroud)

并希望将以下内容作为输出:

{
     'time': [1, 2, 3], 
     'x_coordinates': [5, 3, 4], 
     'y_coordinates': [7, 6, 8]
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能以最有效的方式实现这一目标?我曾尝试在互联网上寻求建议,但没有关于按单个键对多值键进行排序的内容。任何帮助将不胜感激。

python dictionary python-3.x

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

在Python中,如何获取列表中5个最大值的索引?

我有一个简单的清单:

a = [8, 5, 2, 20, 13, 14, 17, 13, 15, 21]
Run Code Online (Sandbox Code Playgroud)

我可以在列表中获得5个最大值:

sorted(a)[-5:]
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到列表中5个最大值的索引

因此,列表的5个最大值是[14, 15, 17, 20, 21],这些是索引[9, 3, 6, 8, 5].我敢肯定,如果存在重复值,可以考虑多种策略,如果它们接近其他大值,则可以给出它们的索引.

python list max slice indices

0
推荐指数
1
解决办法
209
查看次数