数値のみを含む(小数点付き)csv形式のファイルを読み込んで行列に格納し、操作を実行したいと考えています。それは、数千行以上3列を有することができる...goで数字のcsvデータをインポートする正しい方法
1.5、2.3、4.4
1.1、5.3、2.4
を:ファイルは次のようになります。
私はgo csvライブラリを使用してこれを解決しました。これは[] []文字列を作成した後、forループを使って[] [] float64に解析します。
func readCSV(filepath string) [][]float64 {
csvfile, err := os.Open(filepath)
if err != nil {
return nil
}
reader := csv.NewReader(csvfile)
stringMatrix, err := reader.ReadAll()
csvfile.Close()
matrix := make([][]float64, len(stringMatrix))
//Parse string matrix into float64
for i := range stringMatrix {
matrix[i] = make([]float64, len(stringMatrix[0]))
for y := range stringMatrix[i] {
matrix[i][y], err = strconv.ParseFloat(stringMatrix[i][y], 64)
}
}
return matrix
}
これが正しいか効率的な方法か、より良い方法があるかどうかは疑問でした。
代わりにreader.Read()を使用して、読み込み中に各行を解析するようにします。私は知らないけど、私はたくさんの重複した仕事をしているように感じる。