2012-01-25 27 views
12

numaralı dizideki başka bir diziye göre sıralayın Bir dizinin satırlarını başka bir değere göre sıralamaya çalışıyorum. Örneğin:Dizinin satırlarını Python

I muhafaza edilmesi azalan sırayla arr1 sıralamak ve arr1 ve ARR2 arasındaki mevcut ilişki istiyorum
import numpy as np 
arr1 = np.random.normal(1, 1, 80) 
arr2 = np.random.normal(1,1, (80,100)) 

(yani, her iki sıralamadan sonra arr1[0] ve arr2[0, :] satır aynıdır). olarak

cevap

18

Kullanım argsort aşağıdaki gibidir:

arr1inds = arr1.argsort() 
sorted_arr1 = arr1[arr1inds[::-1]] 
sorted_arr2 = arr2[arr1inds[::-1]] 

O büyükten küçüğe sıralar.

3

Zip işlevini kullanın: zip(*sorted(zip(arr1, arr2))) İhtiyacınız olanı yapar.

Şimdi açıklama: zip(arr1, arr2) iki listeyi birleştirecek, böylece [(0, [... liste 0 ...]), (1, [... liste 1 ...]), ...] Ardından, varsayılan olarak tuple'daki ilk alana dayanan sorted(...)'u çalıştırıyoruz. Ardından, zip(...)'u tekrar çalıştırıyoruz, bu da tupllerin sıralanmasını alıyor ve tuple'daki ilk öğeden (arr1'den) ve ikinci elementten (arr2'den) iki liste oluşturuyor.

İlgili konular