저는 스칼라를 처음 접했고 쉽게 겉으로보기에는 쉬운 문제가 있습니다. 스칼라 라이브러리 breeze
을 사용 중이며 array buffer
(변경 가능)을 가져 와서 결과를 행렬에 넣어야합니다. 이건 ... 단순해야하지만? 스칼라는 매우 똑똑한 타입 캐스팅이다. breeze
은 DenseVector를 만들 때 어떤 데이터 타입을 사용하는지에 대해 까다롭게 보였다. 이것은 프로토 타입 코드 일 뿐이지 만 누구나 솔루션을 제안 할 수 있습니까? 을 설정 M(0, 0 to 2) := DenseVector(1, 2, 3)
: 지금 나는 바람에스칼라 라이브러리 브리즈로 행렬 채우기
//9 elements that need to go into a 3x3 matrix, 1-3 as top row, 4-6 as middle row, etc)
val numbersForMatrix: ArrayBuffer[Double] = (1, 2, 3, 4, 5, 6, 7, 8, 9)
//the empty 3x3 matrix
var M: breeze.linalg.DenseMatrix[Double] = DenseMatrix.zeros(3,3)
는이 방법을 M(0,0) = 100
같은 물건을하고 100에 첫 번째 값을 설정할 수 있습니다 ... 같은 것을 가지고, 은 또한 물건을 같이 할 수있는 나는 그것이 같은 뭔가를 얻을 수없는 1, 2, 3 그러나에 첫 번째 행 ...
var dummyList: List[Double] = List(1, 2, 3) //this works
var dummyVec = DenseVector[Double](dummyList) //this works
M(0, 0 to 2) := dummyVec //this does not work
성공적으로는 1, 2, 3에 첫 번째 행을 변경합니다. 그리고 ArrayBuffer가 아니라 List가 있습니다.
ArrayBuffer에서 데이터 유형을 변경하려고하지만이 방법에 접근하는 방법을 모르겠다 ... 하나씩 매트릭스 값을 업데이트 해 볼 수는 있지만 코드 해킹이 매우 어려울 듯합니다 (?).
참고 : 저는 파이썬 프로그래머로서 numpy
을 사용하고 그저 배열을 사용하는 데 익숙합니다. breeze
설명서는 다른 데이터 유형에 대한 예제를 제공하지 못해서 아직 설명하지 못했습니다. 감사합니다. DenseVectors 열 벡터,하지만 당신은 전치 DenseVector 기대 행의 하위 집합에 할당하려고 :