相关疑难解决方法(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 的分区比排序慢

我一直在寻找一种有效的方法来计算 numpy 数组中的第 n 个最大值,这个答案将我引向np.partition

顺便说一句,我注意到对于少于 100 个条目的数组,简单排序比 np.partition 方法更快。(相反,对于大型阵列,增益是显而易见的)

对于小型数组,np.partition 运行时间几乎持平的原因是什么?

在此输入图像描述

生成图片的代码:

import pandas as pd
import numpy as np

import timeit

def func_1(inp):
    return np.partition(inp, 10)[10]

def func_2(inp):
    return np.sort(inp)[10]

a = []
b = []

N_tests = int(1e5)

for wdw in range(20, 1000, 10):

    print wdw

    res1 = timeit.timeit("func_1(test)",
                      setup = "import pandas as pd; import numpy as np; wdw_size = %d; test = np.random.randn(wdw_size); from __main__ import func_1"%wdw, number = N_tests)

    a.append(res1) …
Run Code Online (Sandbox Code Playgroud)

python arrays sorting performance numpy

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

如何获取多维numpy数组中最大n值的索引

我想获得多维numpy数组中最大n值的索引.为了获得一维numpy数组中最大n个值的索引,我找到了这个.在python的交互式shell中测试后,似乎bottleneck.argpartsort无法对多维numpy数组产生影响.为了获得多维numpy数组中最大值的索引,我发现了这一点.它无法获得最大的n.我可以给出的方法是将多维numpy数组转换为{value:index}(元组存在的索引)列表,然后按值对列表进行排序,并获取它的索引.还有更容易或更多的表现吗?

python arrays algorithm numpy multidimensional-array

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

m来自上三角矩阵的最小值,其索引为元组列表

我有一个np.ndarray如下:

[[ inf   1.   3.   2.   1.]
 [ inf  inf   2.   3.   2.]
 [ inf  inf  inf   5.   4.]
 [ inf  inf  inf  inf   1.]
 [ inf  inf  inf  inf  inf]]
Run Code Online (Sandbox Code Playgroud)

有没有办法获得该nd数组中m个最小项的索引和值?所以,如果我想要4个最小的那个

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

其中(row,col,val)是上面的符号.

如果有多个值,则只需随机选择其中一个值.例如,有3个,然后下一个最小值是2,但(0,3,2),(1,2,2),(1,4,2)都是可能的选择.

本质上,我可以有效地从上三角矩阵中提取该格式的k个最小值(矩阵比上面的例子大得多).我尝试使用方形,最小的方法展平它,但是我很难将索引和值对齐.谢谢!

python arrays numpy min pandas

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

ndarray每行中有N个最大值

我有一个ndarray,每行是一个单独的直方图.对于每一行,我希望找到前N个值.

我知道全局前N个值的解决方案(在numpy数组中找到最大N个元素的快速方法),但我没有看到如何获得每行的前N个.

我可以遍历每一行并应用1D解决方案,但我不能用numpy广播做到这一点吗?

arrays algorithm numpy python-2.7

4
推荐指数
2
解决办法
4110
查看次数

如何从 numpy 数组中获取前 K 个值的索引

假设我有来自 Pytorch 或 Keras 预测的概率,结果是使用 softmax 函数

from scipy.special import softmax
probs = softmax(np.random.randn(20,10),1) # 20 instances and 10 class probabilities
probs
Run Code Online (Sandbox Code Playgroud)

我想从这个 numpy 数组中找到前 5 个索引。我想做的就是对结果运行一个循环,如下所示:

for index in top_5_indices:
    if index in result:
        print('Found')
Run Code Online (Sandbox Code Playgroud)

如果我的结果进入前 5 名,我就会得到结果。

Pytorchtop-k功能,我已经看到了numpy.argpartition,但我不知道如何完成这个?

python numpy keras pytorch

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

在 Python 中查找列表中第二大项的更有效方法

我编写了这个简单的代码,用于执行查找整数列表中第二大项的简单任务:

def second_largest(input_list):
  input_list.sort()
  return input_list[-2]
Run Code Online (Sandbox Code Playgroud)

然而,对于大型列表,此功能可能非常无效,例如一百万个项目的运行时间超过 1.5 秒。

我知道这是因为该函数更改了列表本身(使用 .sort 方法),这对于长列表来说可能非常低效。如何执行此任务,而不必使用更改列表的低效方法?

提前谢谢大家。

python performance

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