如何在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 :(得分:2)
这里matlab单元格数组的最佳等价物是python中的列表:
a = []
for i in range(n):
a.append(f(i))
答案 1 :(得分:2)
如果你想要一个rank-3 Numpy数组,并且你事先知道f(i)
的形状,你可以预先分配数组:
a = np.zeros((n,) + shape)
for i in range(n):
a[i] = f(i)
如果您只想要一个列表(而不是Numpy数组)的矩阵,请使用列表推导:
a = [f(i) for i in range(n)]
获取Numpy数组的另一种方法是从上面的列表推导转换:
a = np.array([f(i) for i in range(n)])
但是,这将比#1效率低,因为在构建Numpy数组之前,f(i)
的结果首先在动态大小的列表中缓冲。