2016-08-05 3 views
1

Есть ли какой-либо простой способ изменить вектор в массив, в котором «заполнение» по строке?Reshape «fill» by row

Более конкретно, предположим, что у меня есть вектор

v = collect(1:8) 

reshape "заполняет" результирующий массив по столбцам:

reshape(v, (2,2,2)) 

2x2x2 Array{Int64,3}: 
[:, :, 1] = 
1 3 
2 4 

[:, :, 2] = 
5 7 
6 8 

Но я хочу получить:

a = Array{Int}(2,2,2) 
a[:, :, 1] = [1 2; 3 4] 
a[:, :, 2] = [5 6; 7 8] 

a 
2x2x2 Array{Int64,3}: 
[:, :, 1] = 
1 2 
3 4 

[:, :, 2] = 
5 6 
7 8 

Этот было бы неплохо добавить к reshape.

+2

Вы можете сделать: переназначения (v, (2,1,3)) на результат. – DNF

ответ

3
mapslices(transpose,reshape(v, (2,2,2)),[1,2]) 

Ключевое слово, в котором вы отсутствовали, это «транспонировать». Остальное я только что взял с the docs