首页 > 解决方案 > 如何根据列的排序值中的特定值从numpy数组中的一列中提取数据

问题描述

我正在对一个包含两列的数组进行升序排序,然后根据第一列中大于 x 的值,尝试从另一个变量的第二列中提取值 > x 的数据。

能够排序并找到第 1 列中大于 x 的值,但不能从列中提取大于 x 的值的对应值。

a1 = np.array([130,4,8,0,87,45,24,22])
a2 = np.array([1.5615, 0.4601, 0.4374, 0.0000, 3.9871, -2.3144, -0.3456, 1.5684])

ind = np.lexsort((a2,a1)) 

[(a1[i],a2[i]) for i in ind]

r = np.array([a1[ind],a2[ind]])
r1 = sorted(x for x in r[0] if x >= 35)
print(r1)

期望 a3 = [-2.3144 3.9871 1.5615] 对于 a2 中的值,基于 a1 [45, 87,130] 中的 x>35

标签: pythonpython-3.xnumpy

解决方案


r[0]您可以执行以下操作,而不是访问其中的值:

>>> sorted([a2[ind] for ind in range(len(a1)) if a1[ind] > 35], key=lambda 
value: np.where(r[1] == value))
[-2.3144, 3.9871, 1.5615]

这将检查索引处的值,然后按索引所在的位置排序r[1]


推荐阅读