标签: average

平均两个角度环绕

可能重复:
如何计算一组角度的平均值?

我有两个角度,a = 20度,b = 350度.这两个角度的平均值是185度.但是,如果我们认为最大角度是360度并且允许环绕,则可以看到5度是更接近的平均值.

在计算平均值时,我遇到了一个很好的公式来解决这个问题.有人有任何提示吗?

还是我在这里拍脚?这被认为是数学中的"坏习惯"吗?

math average angle

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

加权平均值非常大

我使用64位matlab和32g RAM(你知道的).

我有一个130万个数字(整数)的文件(向量).我想制作另一个相同长度的矢量,其中每个点是整个第一个矢量的加权平均值,加权距离该位置的反距离(实际上它的位置是^ -0.1,不是^ -1,但是出于示例目的) .我不能使用matlab的'过滤'功能,因为它只能在当前点之前平均事物,对吧?为了更清楚地解释,这里有3个元素的例子

data = [ 2 6 9 ]
weights = [ 1 1/2 1/3; 1/2 1 1/2; 1/3 1/2 1 ]
results=data*weights= [ 8 11.5 12.666 ]
i.e.
8 = 2*1 + 6*1/2 + 9*1/3
11.5 = 2*1/2 + 6*1 + 9*1/2
12.666 = 2*1/3 + 6*1/2 + 9*1
Run Code Online (Sandbox Code Playgroud)

因此,新矢量中的每个点都是整个第一个矢量的加权平均值,加权1 /(距该位置的距离+ 1).

我可以重新制作每个点的权重向量,然后逐个元素计算结果向量,但这需要130万次for循环迭代,每个迭代包含130万次乘法.我宁愿使用直接矩阵乘法,将1x1.3mil乘以1.3milx1.3mil,这在理论上是有效的,但我无法加载大的矩阵.

然后我尝试使用shell脚本制作矩阵并在matlab中对其进行索引,因此一次只调用矩阵的相关列,但这也需要很长时间.

我没有必要在matlab中这样做,所以人们对利用如此大的数字和获得平均值的任何建议将不胜感激.因为我使用的是^ -0.1的重量,而不是^ -1,所以它不会快速下降 - 百万分之一点仍然加权为0.25,而原始点加权为1,所以我不能只是削减它因为它变大了.

希望这很清楚吗?

以下是答案的代码(因此可以格式化?):

data = load('/Users/mmanary/Documents/test/insertion.txt');
data=data.';
total=length(data);
x=1:total;
datapad=[zeros(1,total) data];
weights = ([(total+1):-1:2 1:total]).^(-.4);
weights = …
Run Code Online (Sandbox Code Playgroud)

matlab average fft convolution large-data

11
推荐指数
1
解决办法
1730
查看次数

Django ORM如何舍入平均结果

我有一个模型,我使用Django ORM从表中提取平均值.我想要舍入Avg值,我该怎么做?

请参阅下文我从YYYY-MM格式的按日期分组的价格模型中提取平均价格,我想自动提取四舍五入到最接近数字的平均值.

rs = Prices.objects.all.extra(select={
    'for_date': 'CONCAT(CONCAT(extract( YEAR from for_date ), "-"),
        LPAD(extract(MONTH from for_date), 2, "00"))'
    }).values('for_date').annotate(price=Avg('price')).order_by('-for_date')
Run Code Online (Sandbox Code Playgroud)

django orm model average rounding

11
推荐指数
5
解决办法
6643
查看次数

如何让xtabs计算均值而不是R中的和?

我有一个数据框,每行代表一个人.该数据框有两个变量:年龄和年份.我想制作一张每年平均年龄的表格.我该怎么做?

我能想到的最好的是xtabs(age ~ year, dataframe),但这给了我每年的年龄总和.

average r mean

10
推荐指数
3
解决办法
7527
查看次数

更快速地计算大矩阵中的非对角线平均值

我需要计算n×n矩阵中每个非对角线元素的平均值.下三角和上三角是多余的.这是我目前使用的代码:

A <- replicate(500, rnorm(500))
sapply(1:(nrow(A)-1), function(x) mean(A[row(A) == (col(A) - x)]))
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但不适用于较大的矩阵.我拥有的不是很大,大约2-5000 ^ 2,但即使有1000 ^ 2,它也比我想要的时间更长:

A <- replicate(1000, rnorm(1000)) 
system.time(sapply(1:(nrow(A)-1), function(x) mean(A[row(A) == (col(A) - x)])))
>   user  system elapsed 
> 26.662   4.846  31.494  
Run Code Online (Sandbox Code Playgroud)

有更聪明的方法吗?

编辑为了澄清,我想独立地对待每个对角线的平均值,例如:

 1 2 3 4
 1 2 3 4
 1 2 3 4
 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

我想要:

 mean(c(1,2,3))
 mean(c(1,2))
 mean(1)
Run Code Online (Sandbox Code Playgroud)

average r matrix

10
推荐指数
2
解决办法
1052
查看次数

每组最新N条记录的平均值

我当前的应用程序根据每个用户的所有记录计算点平均值:

SELECT `user_id`, AVG(`points`) AS pts 
FROM `players` 
WHERE `points` != 0 
GROUP BY `user_id`
Run Code Online (Sandbox Code Playgroud)

业务需求已更改,我需要根据每个用户的最近30条记录计算平均值.

相关表格具有以下结构:

桌子:球员; 列:player_id,user_id,match_id,points

表:用户; columns:user_id

以下查询不起作用,但它确实演示了我尝试实现的逻辑.

SELECT @user_id := u.`id`, (
    -- Calculate the average for last 30 records
    SELECT AVG(plr.`points`) 
    FROM (
        -- Select the last 30 records for evaluation
        SELECT p.`points` 
        FROM `players` AS p 
        WHERE p.`user_id`=@user_id 
        ORDER BY `match_id` DESC 
        LIMIT 30
    ) AS plr
) AS avg_points 
FROM `users` AS u
Run Code Online (Sandbox Code Playgroud)

是否有一种相当有效的方法来根据每个用户的最新30条记录计算平均值?

mysql average greatest-n-per-group limit-per-group

10
推荐指数
2
解决办法
8960
查看次数

平均来自5个单元格,如果不是空白或零

我需要计算5个单元格的平均值,但如果单元格为空或零,则应忽略该值.

我无法使用它

=AVERAGEIFS(A10;B13;C5;D6;D8;"<>0")
Run Code Online (Sandbox Code Playgroud)

有谁知道计算这个的正确方法?

excel average zero

10
推荐指数
2
解决办法
5万
查看次数

组和平均Numpy矩阵

假设我有一个看起来像这样的任意numpy矩阵:

arr = [[  6.0   12.0   1.0]
       [  7.0   9.0   1.0]
       [  8.0   7.0   1.0]
       [  4.0   3.0   2.0]
       [  6.0   1.0   2.0]
       [  2.0   5.0   2.0]
       [  9.0   4.0   3.0]
       [  2.0   1.0   4.0]
       [  8.0   4.0   4.0]
       [  3.0   5.0   4.0]]
Run Code Online (Sandbox Code Playgroud)

什么是平均按第三列编号分组的行的有效方法?

预期的产出是:

result = [[  7.0  9.33  1.0]
          [  4.0  3.0  2.0]
          [  9.0  4.0  3.0]
          [  4.33  3.33  4.0]]
Run Code Online (Sandbox Code Playgroud)

python grouping numpy average matrix

10
推荐指数
2
解决办法
6533
查看次数

Pandas数据帧:按两列分组,然后在另一列上取平均值

假设我有一个具有以下值的数据帧:

df:
col1    col2    value
1       2       3
1       2       1
2       3       1
Run Code Online (Sandbox Code Playgroud)

我想首先根据前两列(col1和col2)对我的数据帧进行分组,然后对第二列(值)的值进行平均.所以期望的输出看起来像这样:

col1    col2    avg-value
1       2       2
2       3       1
Run Code Online (Sandbox Code Playgroud)

我使用以下代码:

columns = ['col1','col2','avg']
df = pd.DataFrame(columns=columns)
df.loc[0] = [1,2,3]
df.loc[1] = [1,3,3]
print(df[['col1','col2','avg']].groupby('col1','col2').mean())
Run Code Online (Sandbox Code Playgroud)

得到以下错误:

ValueError: No axis named col2 for object type <class 'pandas.core.frame.DataFrame'>
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

python group-by average pandas

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

Haskell - 这个平均函数是如何工作的?

我发现了这个平均函数的实现:

avg :: [Int] -> Int
avg = div . sum <*> length
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?我查看了由于以下原因产生的函数div . sum

(div . sum) :: (Integral a, Foldable t) => t a -> a -> a
Run Code Online (Sandbox Code Playgroud)

我明白这一点,但我无法说出<*> length它是如何工作的。

haskell average pointfree function-composition applicative

10
推荐指数
2
解决办法
231
查看次数