python指定数组大小_python-如何根据数组中值的相对大小将numpy数组按特定顺序排序(由单独的列表指定)...

在一段代码中,我已经构造了一个numpy数组,并且我想根据列表中指定的特定顺序对该第一个数组进行排序.结果将是第三个数组(new_values).

第一个数组具有要排序的值.

values = numpy.array([10.0, 30.1, 50, 40, 20])

该列表提供了由new_values中的值的索引给出的顺序,该顺序应按降序排列,其中0对应于最大数字.

order=[0, 3, 1, 4, 2].

所以,

new_values[0] > new_values[3] > new_values[1] > new_values[4] > new_values[2]

我试图找到一个特定的排序函数来完成此任务,例如argsort或使用键,但是我不了解如何使它们适应这种情况.

有没有简单的快速方法可以完成此操作,因为我将在许多迭代中执行此操作.如果这有利于使用更好的方法进行排序,我愿意更改第二个数组的顺序,以另一种方式指定索引.

目前,我正在使用以下for循环.

size=len(values)

new_values = np.zeros(size)

values = sorted(values,reverse=True)

for val in range(0, size):

new_values[int(order[val])] = values[val]

先感谢您!

解决方法:

您可以简单地为此使用索引:

>>> import numpy as np

>>> values = np.array([10.0, 30.1, 50, 40, 20])

>>> order=[0, 3, 1, 4, 2]

>>> sorted_array=values[order]

>>> sorted_array

array([ 10. , 40. , 30.1, 20. , 50. ])

同样,如果您需要以下条件,则@Divakar在评论中提到:

new_values[0] > new_values[3] > new_values[1] > new_values[4] > new_values[2]

你可以做 :

>>> values[order]=np.sort(values)[::-1]

>>> values

array([ 50. , 30.1, 10. , 40. , 20. ])

标签:arrays,python,sorting,numpy

来源: https://codeday.me/bug/20191120/2042347.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值