使用自定义Golang库计算算术平均值

时间:2018-07-17 11:44:01

标签: go

package main

import (
    "fmt"

    maths "github.com/ematvey/go-fn/fn"
)

var avg float64

func main() {

    A := []float64{2, 3, 5, 7, 11, 13}

    avg := maths.ArithMean(A)
    fmt.Println(avg)
}

我无法调用ArithMean函数。它给出了错误:

  

在fn.ArithMean的参数中不能使用A(类型[] float64)作为类型* fn.Vector

1 个答案:

答案 0 :(得分:0)

  

package fn

type Vector

type Vector struct {
    A   []float64 // data
    L   int       // length
}

例如,

package main

import (
    "fmt"

    maths "github.com/ematvey/go-fn/fn"
)

func main() {
    a := []float64{2, 3, 5, 7, 11, 13}
    v := &maths.Vector{A: a, L: len(a)}
    avg := maths.ArithMean(v)
    fmt.Println(avg)
}

输出:

6.833333333333333

其他统计软件包可能更容易使用,也更直观。

例如,

  

函数均值

func Mean(x, weights []float64) float64
     

均值计算数据集的加权平均值。

sum_i {w_i * x_i} / sum_i {w_i}
     

如果权重为零,则所有权重均为1。   零,则len(x)必须等于len(weights)。

package main

import (
    "fmt"

    "gonum.org/v1/gonum/stat"
)

func main() {
    a := []float64{2, 3, 5, 7, 11, 13}
    mean := stat.Mean(a, nil)
    fmt.Println(mean)
}

输出:

6.833333333333333