标签: median

并行计算大数组的中位数

我被问过这个问题一次,仍然无法弄清楚:

你有一个N整数数组,其中N很大,比如十亿.您想要计算此数组的中值.假设您有m+1机器(m工人,一个主人)来分配作业.你会怎么做呢?

由于中位数是一个非线性算子,你不能只找到每台机器的中位数,然后取这些值的中位数.

parallel-processing median

2
推荐指数
1
解决办法
2556
查看次数

想知道为什么会用这种方式计算中位数?

我想知道使用这个中值函数的原因是什么,而不仅仅是计算min + (max - min) / 2:

// used by the random number generator
private static final double  M_E12 = 162754.79141900392083592475;

/**
 * Return an estimate of median of n values distributed in [min,max)
 * @param min the minimum value 
 * @param max the maximum value
 * @param n 
 * @return an estimate of median of n values distributed in [min,max)
 **/
private static double median(double min, double max, int n) 
{
    // get random value in [0.0, …
Run Code Online (Sandbox Code Playgroud)

java random algorithm median

2
推荐指数
1
解决办法
467
查看次数

如何找到与其平均值最接近的矩阵的行和列?在R

我有一个大矩阵,像这样一个:

NCols=100
NRows=100

myMat<-matrix(runif(NCols*NRows), ncol=NCols)
Run Code Online (Sandbox Code Playgroud)

我感兴趣的是找到哪个行和列具有与矩阵的所有值的均值或中值最接近的值,计算方法如下mean(myMat).

我怎么能这样做R

r matrix mean median

2
推荐指数
1
解决办法
500
查看次数

列表中中位数的位置

我有一个未排序的数组,我需要中位数的位置。我知道有几种算法可以在 O(n) 中计算给定数组的中位数,但所有这些算法都包括对数组的某种重新排序,例如中位数的中位数和随机选择。

我对中位数本身不感兴趣,只对它在数组中的位置感兴趣。

有什么办法可以在 O(n) 内做到这一点吗?跟踪所有交换会产生巨大的开销,因此我正在寻找另一种解决方案。

c++ arrays position median

2
推荐指数
1
解决办法
1515
查看次数

如何查找分组的SQL中位数

我正在使用SQL Server 2008

如果我有这样的表:

Code   Value
-----------------------
4      240
4      299
4      210
2      NULL
2      3
6      30
6      80
6      10
4      240
2      30
Run Code Online (Sandbox Code Playgroud)

如何通过Code列找到中位数AND组?要获得这样的结果集:

Code   Median
-----------------------
4      240
2      16.5
6      30
Run Code Online (Sandbox Code Playgroud)

我真的很喜欢这个中位数的解决方案,但不幸的是它不包括Group By:https: //stackoverflow.com/a/2026609/106227

sql t-sql sql-server group-by median

2
推荐指数
1
解决办法
4964
查看次数

计算std :: vector <double>的中位数导致段错误

以下函数应该计算a的中位数std::vector<double>.

double vecMed(vector<double>& vec) {

    vector<double> copyVec = vec;

    sort(copyVec.begin(), copyVec.end());

    if( copyVec.size()%2 == 0)
        return (copyVec[floor(static_cast<double>(copyVec.size())/2.0)] + copyVec[ceil(static_cast<double>(copyVec.size())/2.0)]) / 2.0;
    else
        return copyVec[copyVec.size()/2];
}
Run Code Online (Sandbox Code Playgroud)

我在这条线上遇到了一个段错误,有时候:

return (copyVec[floor(static_cast<double>(copyVec.size())/2.0)] + copyVec[ceil(static_cast<double>(copyVec.size())/2.0)]) / 2.0;
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到这个功能的问题?

段错误可能是由于我不知道的其他地方的内存损坏,但我想确保在我探索这种可能性之前,我没有在上面的代码中做出一个微妙或粗心的错误.


GDB说:

Program received signal SIGSEGV, Segmentation fault.
0x0000000000428ab6 in vecMed (this=0x7fffffffd1b0, vec=...) at ../globals.cpp:834
834         return (copyVec[floor(static_cast<double>(copyVec.size())/2.0)] + copyVec[ceil(static_cast<double>(copyVec.size())/2.0)]) / 2.0;
(gdb) bt
#0  0x0000000000428ab6 in vecMed (this=0x7fffffffd1b0, vec=...) at ../globals.cpp:834
Run Code Online (Sandbox Code Playgroud)

c++ segmentation-fault median stdvector

2
推荐指数
1
解决办法
2974
查看次数

使用 R 中的 dplyr 的 summarise() 按日期获取中位数

我有一个按日期和时间间隔列出的整数计数观察数据框。我想使用 dplyr 包按日期查找这些观察值的中位数。我已经正确设置了日期列的格式,并使用了 group_by ,如下所示:

data.bydate <- group_by(data.raw, date)
Run Code Online (Sandbox Code Playgroud)

当我使用 summarise() 查找每个日期组的中位数时,我得到的只是一堆零。数据中存在 NA,因此我已使用 na.rm = TRUE 删除它们。

data.median <- summarise(data.bydate, median = median(count, na.rm = TRUE)
Run Code Online (Sandbox Code Playgroud)

我还应该这样做吗?

r summary median dplyr

2
推荐指数
1
解决办法
3万
查看次数

使用 php 确定中位数

我有一个 HTML 页面,其中包含可供您选择的单选按钮。一是年龄范围,二是薪资范围。这些是由 php 文件处理的,我想做的是能够打印

\n\n
    \n
  • 用户\xe2\x80\x99s年龄范围
  • \n
  • 用户\xe2\x80\x99s薪资范围
  • \n
  • 用户\xe2\x80\x99s年龄范围的工资中位数
  • \n
  • 关于用户如何与他/她的年龄中位数进行比较的声明\n
    \n到目前为止,我只打印用户的年龄范围和工资范围。我不知道如何打印其他的。

    \n\n\n\n

    收入

    \n\n
    <table>\n    <tr>\n        <td>\n            Age Range</td>\n        <td colspan="2">\n            Salary Range</td>\n    </tr>\n    <tr>\n        <td>\n            <input id="Radio1"  checked="checked" name="R1" type="radio" value="V1" />15 to \n            24 Years</td>\n        <td>\n            <input id="Radio7" checked="checked" name="R7" type="radio" value="V1" />$15,000 \n            to $24,999</td>\n        <td>\n            <input id="Radio13"  name="R7" type="radio" value="V1" />$75,000 \n            to $84,999</td>\n    </tr>\n    <tr>\n        <td>\n            <input id="Radio2"  name="R1" type="radio" value="V1" />25 to \n            34 Years</td>\n        <td>\n            <input id="Radio8"  name="R7" type="radio" …
    Run Code Online (Sandbox Code Playgroud)

php median radio-button

2
推荐指数
1
解决办法
2322
查看次数

使用matrixStats::rowMedians 查找每行的中位数

df我正在尝试使用rowMediansfrom包计算数据框的行中位数matrixStats

Abundance Sample1 Sample2 Sample3 Sample4 Sample5 Sample6 Sample7
Species1   2        4       0       0       0       6       0
Species2   3        5       6       4       0       0       0
Species3   3        7       2       5       8       0       0
Species4   0        0       3       8       0       0       8
Species5   7        5       6       0       0       4       4
Species6   4        2       3       0       0       2       1
Run Code Online (Sandbox Code Playgroud)

我想计算每行的中位数并将它们附加到新列中。我收到一个错误

参数“x”必须是向量或矩阵

所以我尝试将我的转换df为矩阵。该str函数显示该物种的每个值都是数字,所以我尝试:

library(matrixStats)
matrix(df, rownames.force = NA)
rowMedians(df)
Run Code Online (Sandbox Code Playgroud)

但我仍然遇到同样的错误。任何帮助表示赞赏。

r matrix median dataframe

2
推荐指数
1
解决办法
1034
查看次数

Pandas:合并重复的索引值

我有一个熊猫系列,我想以三种不同的方式组合起来。该系列如下:

import pandas as pd
timestamps = [1,1,1,2,3,3,3,4]
quantities = [10,0,2,6,7,2,8,0]
series = pd.Series(quantities, index=timestamps)
Run Code Online (Sandbox Code Playgroud)

显然,时间戳有3 values of 11 value of 23 values of 31 value of 1。我想生成以下系列:

1. 重复索引值的总和:

pd.Series([12,6,17,0], index=[1,2,3,4])
Run Code Online (Sandbox Code Playgroud)

2. 重复索引值的中位数:

pd.Series([2,6,7,0], index=[1,2,3,4])
Run Code Online (Sandbox Code Playgroud)

2、重复索引值的数量:

pd.Series([3,1,3,1], index=[1,2,3,4])
Run Code Online (Sandbox Code Playgroud)

numpy我将使用一种unique_elements_to_indices方法来实现这一点:

from typing import Dict
import numpy as np
def unique_elements_to_indices(array: np.array) -> Dict:
    mapping = {}
    for unique_element in np.unique(array):
        mapping[unique_element] = np.where(array == unique_element)[0]
    return mapping
Run Code Online (Sandbox Code Playgroud)

...然后我将循环遍历 …

python sum unique median pandas

2
推荐指数
1
解决办法
4854
查看次数