2014-11-11 4 views
1

내가 k 개의 mxn 행렬을 가지고 있고 함께 쌓아두면 kxmxn 또는 mxnxk 결과를 얻어야합니까? 이전에는 numpy로, 이것이 일반적인 규칙입니까?k 행렬을 함께 쌓기위한 협약은 k-by -... by 또는 ..- by -... by-k?

IE,

numpy.array([matrix1, matrix2, matrix3]) 

+0

이다'참조 (..., ..., K) '로 적층 입력 k' 예컨대 ['np.linalg.inv'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.inv.html), 갈 예정인 국제 대회에 가장 가깝습니다. 도망. – Jaime

답변

1

np.array는 스택 킹 기능이 아닌 어레이 (3, X, X)을 수득한다. 당신이 시연하는 것은 그것이 어떻게 작동하는지의 특별한 결과입니다. numpyconcatentate이고 특수한 경우는 hstack, vstackdstack입니다. 그 중 2 개는 차원을 추가하지 않으며, 3 번째는 차원을 추가합니다.

np.arraynp.concatenate([matrix1[None,...], matrix2[None,...]])과 같이 동작합니다. 이 말에 치수를 추가

[matrix1, matrix2, matrix3] # like np.hstack 
cat(2, matrix1, matrix2, matrix3] # also horzcat 
[matrix1;matrix2] # np.vstack 
cat(1, matrix1 ...) # also vertcat 
cat(3, matrix1 ...) # like np.dstack 

자연 온다, 필요에 따라 더 넓은 경향의 결과는 MATLAB/옥타브에서

np.array(matrix1, ndim=3) # (1,x,x) shape 

예를 들면, - 사전 펜던 치수, 나는 생각한다 옥타브로. 처음에는 차원을 추가하는 것이 Octave에서 더 어색합니다. , I 핸드 오프, 생각할 수있는 가장 적절한`numpy.linalg`의 gufuncs 취할

[reshape(matrix1,1,x,x); reshape(matrix2,1,x,x)] 
+0

예를 들어 주셔서 감사합니다. numpy가 차원을 앞에하는 또 다른 장소는 방송 할 때입니다. IE, np.ones ((3)) + np.ones ((2,3))는 작동하지만 np.ones ((2)) + np.ones ((2,3))는 실패합니다. 이 "prepend left"컨벤션을 선호하는 다른 시스템을 찾을 수 없었습니다. 어디서 왔는지 궁금합니다. –

+0

사전 보류는 'C'주문과 함께 자연스럽고, 'F'주문 후 보류입니다. MATLAB/Octave는 FORTRAN 함수에 대한 래퍼로 시작되었습니다. 'numpy'는 오랫동안 방송 해왔다. Octave (그리고 Matlab?)는 최근에 그것을 추가했습니다. 처음에는 Matlab 3.5 일만에 2d로 제한되었고, numpy는 다차원 적이었습니다. 'APL'은 더 오래된 배열 언어이지만,이 '스태킹'을 어떻게 처리했는지는 기억하지 못합니다. – hpaulj