2015-04-02 76 views
0

我想連接從磁盤加載的一組numpy數組。所有數組都有不同數量的列。Numpy連接到空陣列

這是我的代碼

import numpy as np 

FILE_LIST = ["matrix a", "matrix b"] 

result=np.array([[0,0],[0,0]]) # I need to avoid this zero matrix 
for fileName in FILE_LIST: 
    matrix = matrix= np.genfromtxt(fileName, delimiter=" ")  
    result = np.concatenate((result, matrix),axis=1) 

print result 

這裏,我已經初始化結果與零數組作爲我不能連接到一個空數組。我需要避免在結果的開頭附加這個零數組。如何實現這一目標?

回答

2

我會建議先裝在陣列中的所有數據,然後才能申請numpys hstack以水平堆疊陣列

result = np.hstack([np.genfromtxt(fileName,delimiter=" ") for fileName in FILE_LIST]) 
+0

美麗...... !!!非常感謝你做的這些。 – Erdnase 2015-04-02 17:42:40

0

這不是顯而易見的,爲什麼你需要避免這種情況。但是,你可以這樣做:

result=None 
for fileName in FILE_LIST: 
    matrix= np.genfromtxt(fileName, delimiter=" ") 
    if result is None: 
     result = matrix 
    else: 
     result = np.concatenate((result, matrix),axis=1) 

一般我們儘量避免重複連接(或追加)到陣列,而不是prefering要添加到列表中。但在這種情況下,genfromtxt是一個足夠大的操作,因此,如何組合陣列並不重要。

與列表,循環將是:

result=[] 
for fileName in FILE_LIST: 
    result.append(np.genfromtxt(fileName, delimiter=" "))  
result = np.concatenate(result,axis=1) 

列表理解在本質上是一樣的。