亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將麻木數字化功能轉化為 go

將麻木數字化功能轉化為 go

Go
HUX布斯 2022-09-12 16:48:09
數字化函數返回輸入數組中每個值所屬的條柱的索引。下面的代碼來自蟒蛇 -x = np.array([0.8, 6.9, 3.5, 1.9])bins = np.array([0.0, 1.0, 2.5, 4.0, 10.0])inds = np.digitize(x, bins)print(inds)array([1, 4, 3, 2])
查看完整描述

2 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

這是這樣做的:


package main


import (

   "fmt"

   "sort"

)


func digitize(x, bins []float64) []int {

   inds := make([]int, len(x))

   for k, v := range x {

      inds[k] = sort.SearchFloat64s(bins, v)

   }

   return inds

}


func main() {

   x := []float64{0.8, 6.9, 3.5, 1.9}

   bins := []float64{0, 1, 2.5, 4, 10}

   inds := digitize(x, bins)

   fmt.Println(inds) // [1 4 3 2]

}

https://golang.org/pkg/sort#SearchFloat64s


查看完整回答
反對 回復 2022-09-12
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

package main


import (

    "errors"

    "fmt"

    "sort"

)


type arr []float64


func (a arr) Less(i, j int) bool {

    return a[i] < a[j]

}


func (in arr) digitize(bins arr) ([]int, error) {

    if !sort.SliceIsSorted(bins, bins.Less) {

        return nil, errors.New("bins array is not sorted")

    }


    indices := make([]int, len(in))

    for i, x := range in {

        indices[i] = sort.SearchFloat64s(bins, x)

    }


    return indices, nil

}


func main() {

    var (

        x    = arr{0.8, 6.9, 3.5, 1.9}

        bins = arr{0.0, 1.0, 2.5, 4.0, 10.0}

    )


    indices, err := x.digitize(bins)

    if err != nil {

        panic(err)

    }


    fmt.Println(indices)

}

樓盤: https://golang.org/pkg/sort#SearchFloat64s


搜索浮動64s在浮點數的排序切片中搜索x64,并返回搜索指定的索引。返回值是如果 x 不存在時插入 x 的索引(它可能是 len(a))。切片必須按升序排序。


查看完整回答
反對 回復 2022-09-12
  • 2 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號