2016-04-26 16 views
5

Bir indis listesi verilen bir vektördeki değerleri yeniden düzenlemek mümkün mü?Julia'da vektörün yerinde yeniden düzenlemesi?

İki dizim var ve her ikisi de önceden gelen arr1 tabanlı arr2 sıralamak istiyorum.

indices = zeros(length(arr1)) 
sortperm!(indices, arr1) 
arr2[indices] <-- this returns a copy 
+1

'permute!' Senin arkadaşın. REPL komut isteminde '? Permute! 'Ile yardım edin. –

+0

Güzel, tam olarak aradığım şey bu! Var olduğunu bilmiyordum. – tlnagy

+0

Bunu bir yanıt olarak eklemek isterim, bu yüzden bu soruyu cevaplandı olarak işaretleyebilir miyim? – tlnagy

cevap

7

permute! arkadaşınız. REPL komut isteminde ?permute! ile ilgili yardım alın.

Özellikle

,

permute!(arr2,indices) 

yerinde arr2 OP permute gerekir. Ancak, dokümanlar büyük vektörler üzerinde yeni bir kopya oluşturmanın daha iyi olabileceğini öne sürüyor.

+1

Sanırım, bellek veya CPU sınırlı olup olmadığına bağlı olarak değişirsiniz. “Permute! (Arr2, indices)” vs “arr2 [indices]” – tlnagy

+0

Bazı CPU'lar daha iyi hale getiren arr2 [indices] 'için özel talimatlara sahip olabilir büyük vektörler için (bakınız * scatter * ve * toplar * ops). LLVM/Julia'nın bunları kullanıp kullanamayacağını bilen var mı? –

İlgili konular