如何基于列的排序值中的特定值仅从numpy数组中的一列提取数据

时间:2019-03-27 22:25:05

标签: python python-3.x 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)

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

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作来代替访问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]中的位置进行排序