使用javascript规范化数字
我想将数字标准化为0到10的范围。。用异常值排除法 例如:使用javascript规范化数字,javascript,Javascript,我想将数字标准化为0到10的范围。。用异常值排除法 例如: var arr = [100,200,19,0,200,12,20000] normalise(arr,200); // should be 10 normalise(arr,12); // should be 0.6 // My expected output for above array: [5, 10, 0.95, 0, 10, 0.6, 10] 下面是使用python的示例代码,这正是我想要的 arr = np.arr
var arr = [100,200,19,0,200,12,20000]
normalise(arr,200); // should be 10
normalise(arr,12); // should be 0.6
// My expected output for above array:
[5, 10, 0.95, 0, 10, 0.6, 10]
下面是使用python的示例代码,这正是我想要的
arr = np.array([100,200,19,0,200,12,20000])
upper_lim = np.median(arr) * 2
arr_adj = np.where(arr>upper_lim, upper_lim, arr) / upper_lim
arr_adj *= 10
我尝试将其转换为javascript,如下所示,我对javascript是新手
函数normalisearr,值{
var arr=[100200,19,02000,12000]
var上限=中间值*2;
//我在这里被打动了
恢复正常*10;
}
函数中间数{
var中值=0,
计数=数字。长度;
数字。排序;
如果计数%2==0{//为偶数
中位数=数字[计数/2-1]+数字[计数/2]/2;
}否则{//是奇怪的
中位数=数字[计数-1/2];
}
返回中值;
}
normalisearr,200;//应该是10岁
请帮我把它转换成javascript,谢谢
np.where(arr>upper_lim, upper_lim, arr) / upper_lim;
默认情况下,排序方法按字母顺序对元素进行排序
function normalise(arr,value)
{
var count = arr.length;
arr.sort((a, b) => a - b);
if (count % 2 === 0) { // is even
median = (arr[count / 2 - 1] + arr[count / 2]) / 2;
} else { // is odd
median = arr[(count - 1) / 2];
}
var upper_lim = median*2;
//console.log(upper_lim);
/*for ( i = 0; i < count; i++ ) {
arr[i] = 10*Math.min(arr[i], upper_lim )/upper_lim;
}
console.log(arr);
*/
return 10*Math.min(value, upper_lim )/upper_lim;
}
var arr = [100,200,19,0,200,12,20000]
console.log(normalise(arr,200)); // should be 10
为什么有两个normalize调用,而数组只有一个结果?2万人怎么办?