我具有以下归一化功能:
...
private def NormalizeValues(dataValues: Array [Double]): Array[Double] = {
val min = dataValues.min
val max = dataValues.max
dataValues.map(v => (v - min) / (max - min))
}
...
我希望它能够工作,无论它接收Double数组还是Int数组。我认为,与其将Int数组转换为Double数组,不如说有更好的方法,也许可以使用更通用的类型,或者指定Array[Doubles]
和Array[Int]
可以被隐隐接收功能定义。
你有什么主意吗?
答案 0 :(得分:3)
这里是将所有输入转换为Double
,然后完全按照原始代码进行操作的版本:
def normalize[N: math.Numeric](data: Array[N]): Array[Double] = {
val num = implicitly[Numeric[N]]
val dataValues = data.map(num.toDouble)
val min = dataValues.min
val max = dataValues.max
dataValues.map(v => (v - min) / (max - min))
}
返回类型始终为Array[Double]
,因为对于Array[N]
,Int
和所有其他整数类型返回Long
似乎没有任何意义
一个例子:
normalize(Array[Int](0, 1, 3))
// returns: Array[Double]
// Array(0.0, 0.3333333333333333, 1.0)