我得到了下面的R代碼,我需要將它轉換爲python並在python環境下運行它,基本上我已經用rpy2模塊完成了它,但是它看起來有點枯燥,同樣的事情,所以有人可以找到一種更好的方法來將下面的R代碼改寫爲與rpy2模塊等效的Python腳本?將R代碼轉換爲Python腳本
mymad <- function (x)
{
center <- median(x)
y <- abs(x - center)
n <- length(y)
if (n == 0)
return(NA)
half <- (n + 1)/2
1.4826 * if (n%%2 == 1) {
sort(y, partial = half)[half]
}
else {
sum(sort(y, partial = c(half, half + 1))[c(half, half +
1)])/2
}
}
廣泛使用的包numpy的提供位機能(numpy.median),所以不要浪費時間重新發明輪子! – ThR37 2010-08-05 16:15:58
我錯過了什麼嗎?假設x是一個數字列表,(x - median(x)),Python不會做矢量數學。 – Mark 2010-08-05 16:16:23
@標誌是,但numpy做到了!如果x是一個numpy數組,則可以編寫x-np.median(x)。否則,你可以使用列表理解:median([abs(val-median(x))for val in x]) – ThR37 2010-08-05 16:17:58