2016-12-05 15 views
-2

ベクトルを入力とし、入力ベクトルの最小値が1に置き換えられるように出力を別のベクトルとして返すR関数を記述しました。要素それはベクトルの長さで置き換えられるベクトルの最大値まで2などで置き換えられます。これは私の関数です:ベクトルの要素を1からベクトルの長さに再配列する

resc<-function(x){ 
    m<-length(unique(x)) 
    nor<-rep(0,length(x)) 
    x_2<-x 
    for(i in 1:m){ 
    temp<-min(x_2) 
    temp_2<-which(x==temp) 
    nor[temp_2]<-i 
    x_2<-x_2[-which(x_2==temp)] 
    } 
    return(nor) 
} 

この関数をPythonでどのように書き直すことができますか?私は試してみましたが、私はちょっとコマンドの使い方と混同しました。

+4

、その関数は、既にRに存在し、それは 'rank'です。それをどのように翻訳するかを伝えるのに十分なpythonを知らないでください。 – nicola

+1

Rの場合、 'rank'を使ってベクトルの要素のランクを与え、Pythonの場合は[Python/NumPyを使って配列内の項目をランク付けする]ことができます(http://stackoverflow.com/questions/5284646/rank -items-in-an-array-using-python-numpy) –

+1

R言語@nikolaと@Ronakの直感の両方に感謝します! これは私が探しているものだと思います! –

答えて

1

RonakとNicolaが言ったように、同じ結果を得るにはrank関数が必要です。

Pythonでは、私がしようとするだろう:それは価値がある何のため

import scipy.stats as ss 
ss.rankdata([array]) 
関連する問題