Как можно получить размерность матрицы в go-lang?
Вот кусок кода:
package main
import (
"fmt"
"gonum.org/v1/gonum/mat"
)
func main() {
// Matrix and Vector
// Initialize a Matrix A
row1 := []float64{1,2,3}
row2 := []float64{4,5,6}
row3 := []float64{7,8,9}
row4 := []float64{10,11,12}
A := mat.NewDense(4,3,nil)
A.SetRow(0, row1)
A.SetRow(1, row2)
A.SetRow(2, row3)
A.SetRow(3, row4)
fmt.Printf("A :\n%v\n\n", mat.Formatted(A, mat.Prefix(""), mat.Excerpt(0)))
// Initialize a Vector v
v := mat.NewDense(3,1, []float64{1,2,3})
fmt.Printf("v :\n%v\n\n", mat.Formatted(v, mat.Prefix(""), mat.Excerpt(0)))
//Get the dimension of the matrix A where m = rows and n = cols
row, col := len(A)
// row, col := size(A)
fmt.Println("row: ", row)
fmt.Println("col: ", col)
}
Ошибка:
invalid argument A (type *mat.Dense) for len
Когда я использую size
определить размеры матрицы A
, Тогда это дает мне ошибку undefined: size
,
Как я могу получить размеры матрицы A
?
3 ответа
Решение
import "gonum.org/v1/gonum/mat"
func (m *Dense) Dims() (r, c int)
Dims возвращает количество строк и столбцов в матрице.
Например,
package main
import (
"fmt"
"gonum.org/v1/gonum/mat"
)
func main() {
row1 := []float64{1, 2, 3}
row2 := []float64{4, 5, 6}
row3 := []float64{7, 8, 9}
row4 := []float64{10, 11, 12}
A := mat.NewDense(4, 3, nil)
A.SetRow(0, row1)
A.SetRow(1, row2)
A.SetRow(2, row3)
A.SetRow(3, row4)
fmt.Printf("A matrix:\n%v\n\n", mat.Formatted(A, mat.Prefix(""), mat.Excerpt(0)))
//Get the dimensions of the matrix A
rows, cols := A.Dims()
fmt.Println("A: rows: ", rows)
fmt.Println("A: cols: ", cols)
}
Выход:
A matrix:
⎡ 1 2 3⎤
⎢ 4 5 6⎥
⎢ 7 8 9⎥
⎣10 11 12⎦
A: rows: 4
A: cols: 3
Ты можешь использовать Dims()
метод, чтобы получить количество строк и столбцов в матрице.
Смотрите: https://godoc.org/gonum.org/v1/gonum/mat.
len
используется для встроенных типов, таких как массив, срез и т. д.
Из документа пакета, вы должны использовать Dims()
чтобы получить доступ к размеру строки и размера столбца
пытаться godoc gonum.org/v1/gonum/mat
и найдите следующие разделы:
func (m *Dense) Dims() (r, c int)
Dims returns the number of rows and columns in the matrix.