重新排列矢量的元素从1到矢量的长度
问题描述:
我已经写了一个R函数,它将一个矢量作为输入并返回另一个矢量作为输出,以便输入矢量的最小值被1代替,元素大于最小值的值被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中重写这个函数?我试过了,但是我对使用命令'which'有点困惑。
答
正如Ronak和Nicola所说的,您只需要使用rank
函数即可获得相同的结果。
在Python,我会尝试:
import scipy.stats as ss
ss.rankdata([array])
对于它的价值,该功能已经存在于R和它的'rank'。不知道Python足以说明如何翻译。 – nicola
对于R,你可以使用'rank',它给你的向量中的元素的等级和python可能[使用Python/NumPy排列数组中的项目](http://stackoverflow.com/questions/5284646/rank -items-in-an-an-an-array-using-python-numpy) –
谢谢你在R语言中的直觉@nicola和@Ronak! 我想这就是我要找的! –