0
我想讀取僅包含數值(帶小數)的csv格式的文件並將其存儲在矩陣中,以便我可以對它們執行操作。該文件是這樣的:正確導入數字csv數據的方法
1.5,2.3,4.4
1.1,5.3,2.4
...
它可以有千行和超過3列。
我使用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()相反,並在讀取時解析每一行。我不知道,但感覺我正在做很多重複的工作。