2016-04-13 3 views
0

Я пытаюсь написать функцию, которая принимает список 3d матриц ..Преобразование списка 3d матрицы в 4d матрицы

так .. каждый элемент списка имеет форму (rows,cols, some_scalar).. Я пытаюсь изменить его в 4d матрицу .. так output = (number_of_elements_in_matrix, rows,cols,some_scalar)

до сих пор у меня есть

output = np.zeros((len(list_of_matrices), list_of_matrices[0].shape[0], list_of_matrices[0].shape[1], 
         list_of_matrices[0].shape[2]), dtype=np.uint8) 

Как я знаю, заполнить этот выходной 4d тензор со значениями ..

def reshape_matrix(list_of_matrices): 
    output = np.zeros((len(list_of_matrices), list_of_matrices[0].shape[0], list_of_matrices[0].shape[1], 
          list_of_matrices[0].shape[2]), dtype=np.uint8) 


    return output 
+0

@Divakar: да .. что сделал работу .. если вы хотите написать его в качестве ответа? – Fraz

ответ

1

Вы можете использовать np.stack для укладки вдоль первой оси (ось = 0), например:

np.stack(list_of_matrices,axis=0) 

Пример запуска -

In [22]: # Create an input list of arrays 
    ...: arr1 = np.random.rand(4,5,2) 
    ...: arr2 = np.random.rand(4,5,2) 
    ...: arr3 = np.random.rand(4,5,2) 
    ...: list_of_matrices = [arr1,arr2,arr3] 
    ...: 

In [23]: np.stack(list_of_matrices,axis=0).shape 
Out[23]: (3, 4, 5, 2) 
Смежные вопросы