2017-06-04 113 views
0

我想知道如何以最簡單的方式在循環中創建矩陣。我有循環,其中包含條件(所以我不知道矩陣的最終形狀),我想在其中添加一個向量矩陣(它應該在開始時是空的)。我想這樣做:在循環中創建2D矩陣的最簡單方法

import numpy as np 

for i in range(100): 
    vector=np.random.random(10) 
    condition=np.random.choice([True, False]) 
    if (condition): 
     matrix[i,:]=vector 

在MATLAB這是超級簡單的(書面例如(在MATLAB語法OFC)的作品完美)。不過,Python有更多(至少對我來說)具有數組和列表的複雜系統。所以,如果有人知道如何在Python中做到這一點最簡單和最正確的方式,請舉個例子。非常感謝!

回答

0

您可以將matrix設爲python列表,然後使用.append()添加vector。然後,你的循環調用後np.array(matrix)

import numpy as np 

matrix_as_list = [] 

for i in range(100): 
    vector=np.random.random(10) 
    condition=np.random.choice([True, False]) 
    if (condition): 
     matrix_as_list.append(vector) 

matrix = np.array(matrix_as_list) 

我不知道Python,但在MATLAB它會更快實際初始化你的矩陣是一個100 -by- 10矩陣,然後刪除不必要的行之後,而比在一個循環中增長矩陣。當然,最快的方法就是將解決方案矢量化,以便根本不使用循環。

+0

非常感謝!我希望有一個解決方案,只是爲了處理數組 - 而不是轉換爲列表,然後返回。 – Capponero

+0

您是否還可以更具體地說明「向量化解決方案以便根本不使用循環」?謝謝 – Capponero

+0

爲什麼不使用列表?我的解決方案只轉換一次btw – Dan