相关疑难解决方法(0)

如何在NumPy数组中获得N个最大值的索引?

NumPy提出了一种获取数组最大值索引的方法np.argmax.

我想要一个类似的东西,但返回N最大值的索引.

例如,如果我有一个数组,[1, 3, 2, 4, 5],function(array, n=3)将返回的索引[4, 3, 1]相对应的元素[5, 4, 3].

python numpy max numpy-ndarray

425
推荐指数
10
解决办法
31万
查看次数

有没有办法获取 numpy 数组(Python)每行的前 k 个值?

给定一个如下形式的 numpy 数组:

x = [[4.,3.,2.,1.,8.],[1.2,3.1,0.,9.2,5.5],[0.2,7.0,4.4,0.2,1.3]]
Run Code Online (Sandbox Code Playgroud)

有没有办法在 python 中保留每行中的前 3 个值并将其他值设置为零(无需显式循环)。上面示例的结果将是

x = [[4.,3.,0.,0.,8.],[0.,3.1,0.,9.2,5.5],[0.0,7.0,4.4,0.0,1.3]]
Run Code Online (Sandbox Code Playgroud)

一个例子的代码

import numpy as np
arr = np.array([1.2,3.1,0.,9.2,5.5,3.2])
indexes=arr.argsort()[-3:][::-1]
a = list(range(6))
A=set(indexes); B=set(a)
zero_ind=(B.difference(A)) 
arr[list(zero_ind)]=0
Run Code Online (Sandbox Code Playgroud)

输出:

array([0. , 0. , 0. , 9.2, 5.5, 3.2])
Run Code Online (Sandbox Code Playgroud)

上面是我的一维 numpy 数组的示例代码(有很多行)。循环遍历 numpy 数组的每一行并重复执行相同的计算将非常昂贵。有没有更简单的方法?

python loops numpy python-2.7 python-3.x

6
推荐指数
1
解决办法
3716
查看次数

如何在列表列表中找到具有最大值的列表(嵌套列表包含字符串和数字)?

我有一份清单清单

list_of_lists = [['a',1,19,5]['b',2,4,6],['c',22,5,9],['d',12,19,20]]
Run Code Online (Sandbox Code Playgroud)

而且我想获得具有最高值的前x个列表,因此前3个max(list_of_lists)将返回

[['c',22, 5,9],['d',12,19,20],['a',1,19,5]]
Run Code Online (Sandbox Code Playgroud)

或者,如果我循环,list_of_lists我可以根据所选列表的索引将每个列表中的最高x max值附加到另一个列表列表中.

这是我正在使用的代码,但它有缺陷,因为我认为我需要在每个循环结束时删除所选答案,因此它不会出现在下一个循环中,它只查看第4列(x [3])

for y in case_list:
    last_indices = [x[3] for x in case_list]
    print("max of cases is: ",max(last_indices))
Run Code Online (Sandbox Code Playgroud)

目前的输出是:

max of cases is:  22
max of cases is:  22
max of cases is:  22
Run Code Online (Sandbox Code Playgroud)

这个答案给出了最高的最大列表,但我希望能够灵活地返回顶部x而不是一个.

答案给出了单个列表中的前x个值.

python list max nested-lists python-3.x

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