2015-05-01 7 views
3

Как создать массив матриц в python?Как создать массив матриц в python?

В MATLAB, я сделать что-то вроде этого:

for i = 1:n 
    a{i} = f(i) 
end 

f(i), где есть функция, которая возвращает случайную матрицу фиксированного размера.

В python, я работаю с numpy, но я не понимаю, как это сделать.

import numpy as np 
a = np.array([]) 
for i in range(0, n): 
    # a.insert(i, f(i)) and does not work 
    # a[i] = f(i) and does not work 
+0

Знаете ли вы форму массива, возвращаемую 'f' заранее? –

+0

Да Я знаю размеры матрицы, возвращаемой 'f'. – Kira

ответ

2
  1. Если вы хотите ранга 3 Numpy массив, и вы знаете, форму f(i) в заранее, вы можете предварительно выделить массив:

    a = np.zeros((n,) + shape) 
    for i in range(n): 
        a[i] = f(i) 
    
  2. Если вы просто хотите получить список (а не массив Numpy) Матриц, использовать список понимание:

    a = [f(i) for i in range(n)] 
    
  3. Другой способ получить массив Numpy для преобразования из списка понимания выше:

    a = np.array([f(i) for i in range(n)]) 
    

    Однако, это будет менее эффективным, чем # 1 потому что результаты f(i) сначала буферизуются в списке с динамическим размером до создания массива Numpy.

2

Лучший эквивалент массива MATLAB клеток здесь список в Python:

a = [] 
for i in range(n): 
    a.append(f(i)) 
+0

Зачем импортировать 'numpy'? Этот код не использует его! –

+0

левый вопрос из. – Daniel

Смежные вопросы