2015-04-02 77 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) 

列表理解在本质上是一样的。