Python Numpy 数组修改

标签 python arrays numpy

我有一个 y 与 x 的图。 根据一些边界条件,我获得了 x 值和相应 y 值的列表

x = [2, 4, 8, 11, 18, 24, 31]

相应的 y 值为

y = [180, 139, 144, 90, 81, 109, 153]

输出是一个数组,返回 x 值的两倍 输出 = [4, 8, 16, 22, 36, 48, 62]

我的任务是将最终输出数组限制为最多 5 个值。这些值应对应于数组 y 中的 5 个最高值。

所以,我应该得到

output = [4, 8, 16, 48, 62]

此外,不同的数据集会给出不同的编号。 x 和 y 值。因此,如果原始输出数组的值小于或等于 5 个,则应按原样打印。

我正在尝试找到一种方法来通过几行代码来完成此操作。

最佳答案

您的问题基本上归结为如何获取数组的 n 个最高值的问题。为此,您将需要 argsort()

if len(y) > 4:
    n_highest = 5
else:
    n_highest = len(y)

y_highest = y.argsort()[-n_highest:][::-1] # this gives you the indices of the five highest values of y

x_out = x[y_highest] * 2

如果您不想对 x_out 进行排序,而是希望反射(reflect)原始排序,则必须迭代 eatch item,询问是否在 y_highest< 中找到其索引:

x_out = [x[i]*2 for i in range(len(x)) if i in y_highest]

关于Python Numpy 数组修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53650813/

相关文章:

python - np.transpose() 和 np.reshape() 组合在纯 numpy 和 numba 中给出不同的结果

java - 尝试使用 Collections.sort 对我的数组进行排序,但没有成功

c++ - 传递一个变量来加载位图文件?

python - 限制数组的值

python - numpy 不规则步幅数组

python - 通过高程网格查找地面大致面积的算法?

python - 具有长时间启动和 gunicorn 超时的应用程序

Python 将逗号分隔列表转换为 pandas 数据框

Python if 语句,无法连接 'str' 和 'instance' 对象

python - 如何通过对 (r,c) 数据帧的每个元素执行函数来创建 (r,c,n) 数组? (Python)