2014-06-06 1 views

답변

3

이 그것을 알아 낸 루비가 할 수있는 것과 다소 유사한! 우리는 벡터 대신 1 차원 배열을 얻기 위해 해킹을 사용할 수 있습니다

reshape([a b].',size(a,1)+size(b,1),1) 

:

reshape([a b]',20,1) 

및 일반적인 뭔가

reshape([a b].',size(a,1)+size(b,1),1)[:] 
+0

차이점은 유스 케이스에서는 중요하지 않을 수 있지만'10 요소 배열 {Int64,1} '객체가 아닌 20x1 Array {Int64,2} 객체를 생성합니다. – DSM

+0

아, 그 점을 지적 해 주셔서 감사합니다. 여기에 지정된 해킹을 사용하여 답변을 편집했습니다. http://stackoverflow.com/questions/23957734/getting-1d-subsets-of-multi-dimensional-arrays-in-julia – bdeonovic

4

을 당신은 사용할 수

reshape([a b].', length(a)+length(b)) 
벡터를 얻으려면

입니다.

+0

감사합니다. 난 당신이 메모를 명시 적으로 reshape 사용하는 경우 해킹이 더 유용 할 것 같아요. – bdeonovic

2

reshape() 기능을 사용하지 않고도이를 수행 할 수있는 간단한 방법이 있습니다. 특히 벡터를 행렬에 바인딩 한 다음 [:]을 해당 행렬의 행렬에 사용할 수 있습니다. 예를 들어

julia> a = 1:10 
    julia> b = 11:20 
    julia> [a b]'[:] 
    20-element Array{Int64,1}: 
    1 
    11 
    2 
    12 
    3 
    13 
    . 
    . 
    . 
    20 

매트릭스 [a b]의 전치를 복용 우리 2 × 10 매트릭스를 제공하고, 벡터의 형태 [:] 복귀의 모든 요소. 줄리아가 column-major ordering을 사용하기 때문에 이유가 [:] 인 것은 우리를 위해 훌륭하게 작동합니다.

1

완전성을 위해 @ bdeonovic의 솔루션을 2 차원 배열로 확장하십시오.

julia> a 
2×2 Array{Int64,2}: 
1 2 
3 4 

julia> b 
2×2 Array{Int64,2}: 
6 7 
8 9 

직조 행 :

julia> reshape([a[:] b[:]]', 4, 2) 
4×2 Array{Int64,2}: 
1 2 
6 7 
3 4 
8 9 

직조 컬럼 :

julia> reshape([a' b']', 2, 4) 
2×4 Array{Int64,2}: 
1 6 2 7 
3 8 4 9 

직조 배열 (스택/vcatting)

julia> reshape([a' b']', 4, 2) 
4×2 Array{Int64,2}: 
1 2 
3 4 
6 7 
8 9