我想從使用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