我想从使用numpy的MatLab中重新创建一些代码,并且我找不到如何存储可变数量的矩阵。在Matlab我用下面的代码:使用numpy在python中存储可变数量的矩阵
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 但它并没有帮助我。
通过有些simular问题寻找一个肮脏的方法似乎是使用全局变量,而不是改变变量名,如下所示:
for x in range(0, 9):
globals()['string%s' % x] = 'Hello'
print(string3)
这是我实现我的目标的最佳途径,或者是有将多个矩阵存储在变量中的正确方法?或者我想要的东西,我不应该这样做,因为蟒蛇有不同的方式处理它?
“knoop”是什么意思? – littleO
在为新的索引赋值时,MATLAB中的单元格和矩阵会增长。 Python的情况并非如此。你必须追加到列表。您需要预先分配数组(如'np.zeros'),或者使用'concatenate'来创建新数组。 (Python字典确实随着分配而增长。) – hpaulj