bla*_*bla 4 python arrays matlab for-loop numpy
我正在尝试在 python \ numpy 中实现对 Matlab 元胞数组的模拟。Matlab 代码如下:
for n=1:10
C{n} = rand(1,n);
end
Run Code Online (Sandbox Code Playgroud)
请注意,每个单元格元素都有不同的长度。现在在 numpy 中:
for n in np.arange(10):
C[n] = np.random.rand(1,n)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,我该怎么做才能实现这个?
在大多数简单的情况下,您可以只使用标准的 Python 列表。它们与 Matlab 元胞数组非常相似,您可以使用它们来存储任何内容:
C = []
for n in np.arange(10):
C.append(np.random.rand(1,n))
Run Code Online (Sandbox Code Playgroud)
如果列表不太长并且只有一个维度(因此只有一个向量),这将是一个不错的选择。请注意,在 Python 中,您通常不会预先分配最终大小的列表,而只是附加到一个空列表。Python 列表针对追加到末尾进行了优化,它们已经在幕后进行了某种预分配。
如果您要翻译具有多个维度或非常大的元胞数组的 Matlab 代码,您可以使用 numpy 数组dtype=object
:
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)
Run Code Online (Sandbox Code Playgroud)