Scala 實現Python Arange

使用scala時有arange的需求,但是沒有找到相對應函數,只找到了group,sliding函數,於是自己實現一個:

 

目標:

給定起點,終點和份數,得到arange結果

 

實現:

計算起始點長度與分類數,得到每一步的Step,然後循環添加即可。這裏還加了隱式轉換是爲了函數傳參類型轉換。

  private implicit def doubleToFloat(number: Double): Float ={
    number.toFloat
  }

  private def getPercent(st: Float, end: Float, num: Int): Array[String] = {
    val step = (end - st) / num
    (0 to num).map(x => {
      val per = st + x * step
      per.formatted("%.2f")
    }).toArray
  }

 

結果:

1)小數

    val arange = getPercent(0,0.5,10)
    println(arange.mkString("\t"))
0.00	0.05	0.10	0.15	0.20	0.25	0.30	0.35	0.40	0.45	0.50

2)整數

    val arange = getPercent(10,100,10)
    println(arange.mkString("\t"))
10.00	19.00	28.00	37.00	46.00	55.00	64.00	73.00	82.00	91.00	100.00

 

額外:

順便mark下group和sliding的用法

group:

把一批數據按group內的數字分組,最後不夠拼成一組的單獨成組:

    arange.grouped(2).foreach(x => println(x.mkString(" ")))
10.00 19.00
28.00 37.00
46.00 55.00
64.00 73.00
82.00 91.00
100.00

sliding:

第一個參數爲窗口大小,第二個參數爲移動步長,相當於從起始點拿一個窗口的數據,再走一個步長,再拿一個窗口,最後不夠了就當獨放出來:

    arange.sliding(3,4).foreach(x => println(x.mkString(" ")))
10.00 19.00 28.00
46.00 55.00 64.00
82.00 91.00 100.00

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章