【发布时间】:2017-09-16 22:17:20
【问题描述】:
我正在尝试使用 numpy 从 MatLab 重新创建一些代码,但我不知道如何存储可变数量的矩阵。在 MatLab 中,我使用了以下代码:
for i = 1:rows
K{i} = zeros(5,4); %create 5x4 matrix
K{i}(1,1)= ET(i,1); %put knoop i in table
K{i}(1,3)= ET(i,2); %put knoop j in table
... *do some stuff with it*
end
我认为我需要做的是创建一个矩阵列表,但我只能在列表中存储单个数组,而不是矩阵。像这样的东西,但随后工作:
for i in range(ET.shape[0]):
K[[i]] = np.zeros((5, 4))
K[[i]][1, 2] = ET[i, 2]
我试过看 https://docs.scipy.org/doc/numpy-dev/user/numpy-for-matlab-users.html 但这对我没有帮助。
查看一些类似的问题,一个肮脏的方法似乎使用全局变量,而不是更改变量名称,如下所示:
for x in range(0, 9):
globals()['string%s' % x] = 'Hello'
print(string3)
这是实现目标的最佳方式,还是有将多个矩阵存储在变量中的正确方式?还是我想要一些我不应该做的事情,因为 python 有不同的处理方式?
【问题讨论】:
-
“knoop”是什么意思?
-
在 MATLAB 中,当您为新索引分配值时,单元格和矩阵会增长。 Python 并非如此。您必须附加到列表。您需要预先分配数组(如
np.zeros),或使用concatenate创建新数组。 (Python 字典会随着赋值而增长。)
标签: python matlab numpy matrix