Python 如何在for循环中将不同大小的项添加到numpy数组中(类似于Matlab的单元格数组)?

Python 如何在for循环中将不同大小的项添加到numpy数组中(类似于Matlab的单元格数组)?,python,arrays,matlab,for-loop,numpy,Python,Arrays,Matlab,For Loop,Numpy,我正在尝试用python\numpy实现对Matlab单元数组的分析。 Matlab代码如下所示: for n=1:10 C{n} = rand(1,n); end 请注意,每个单元格元素都有不同的长度。现在在努比: for n in np.arange(10): C[n] = np.random.rand(1,n) 我得到一个错误,我能做些什么来实现它呢?在大多数简单的情况下,您可以使用标准的Python列表。它们与Matlab单元阵列非常相似,您可以使用它们存储任何内容:

我正在尝试用python\numpy实现对Matlab单元数组的分析。 Matlab代码如下所示:

for n=1:10
    C{n} = rand(1,n);
end
请注意,每个单元格元素都有不同的长度。现在在努比:

for n in np.arange(10):
    C[n] = np.random.rand(1,n)

我得到一个错误,我能做些什么来实现它呢?

在大多数简单的情况下,您可以使用标准的Python列表。它们与Matlab单元阵列非常相似,您可以使用它们存储任何内容:

C = []
for n in np.arange(10):
    C.append(np.random.rand(1,n))
如果列表不太长,并且只有一个维度(所以只有一个向量),这将是一个很好的选择。请注意,在Python中,通常不预先分配最终大小的列表,而只是将其附加到空列表中。Python列表经过优化,可以添加到末尾,它们已经在后台进行了某种预分配

如果使用多维单元格数组或非常大的单元格数组翻译Matlab代码,可以使用带有
dtype=object
的numpy数组:

m, n = 3, 6
C = np.empty((m, n), dtype=object)
for i in xrange(m):
    for j in xrange(n):
        C[i, j] = np.random.rand(i, j)

您正在使用一个列表。因此,在使用该循环中的
[n]
对其进行索引之前,您需要初始化该列表。初始化列表的方法之一如下-

C = [None]*10 # Here 10 is the length of the list
看见