如何在python中创建矩阵数组?

时间:2015-05-01 16:18:06

标签: 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

2 个答案:

答案 0 :(得分:2)

这里matlab单元格数组的最佳等价物是python中的列表:

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

答案 1 :(得分:2)

  1. 如果你想要一个rank-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效率低,因为在构建Numpy数组之前,f(i)的结果首先在动态大小的列表中缓冲。