2017-05-19 3 views
1

4x2 테이블의 모든 값에 2x1 테이블을 곱하고 4x1 벡터 (이상적으로 테이블의 열)를 가져 오려고합니다.kdb의 테이블에서 행렬 곱셈

행렬 행렬을 허용하기 위해 kdb 테이블의 데이터를 행렬로 변환하려면 어떻게해야합니까?

tab2:([]w:1 3 2 1; x:-6 8 0 -3); 
taby:([] b: 3, 2); 
r:tab2 mmu taby"/this doesn't work, but this is what I want to get. 

답변

2

mmu는 부동 소수점에서만 작동하므로 float으로 형변환해야합니다.

q)tab2:([]w:"f"$1 3 2 1; x:"f"$-6 8 0 -3); 
q)taby:([] b:"f"$3, 2); 

는 또한

q)(flip value flip tab2) mmu flip value flip taby 
-9 
25 
6 
-3 
+0

감사합니다 "플립 값 플립"을 수행하여 테이블에서 벡터를 제거해야합니다. 이 작업은 매우 큰 데이터 세트 ('tab2 '의 행 수가 많을 때 효율적입니까? 아니면 더 좋은 방법이 있습니까? kdb가 선형 대수 루틴에 매우 적합하지 않은 것 같습니다.) 사용 사례에 많은 양의 float 유형 데이터가 포함됩니다 선형 회귀, pca와 같은 선형 대수학 기법을 적용하고자하는 표에 저장되어 있습니다. 필자가 지금까지 살펴본 예제 (필사자의 경우)는 시작시 작업 할 매트릭스가 미리 있다고 가정합니다 테이블이 아닌 테이블 –

+1

작업이 매우 효율적입니다. 테이블에서 행렬 (목록의 목록)을 추출하는 것만 큼 불편합니다. 데이터를 테이블로 저장하지 않도록 선택할 수도 있지만 사용 사례에 따라 다릅니다. q 수학 라이브러리를 확인해 보는 것도 좋습니다 : http://althenia.net/qml – terrylynch

+0

링크를 가져 주셔서 감사합니다. –