Numpy连接到空数组

时间:2015-04-02 10:08:47

标签: python 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 个答案:

答案 0 :(得分:2)

我建议首先加载数组中的所有数据,然后应用numpys hstack以便水平堆叠数组

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

答案 1 :(得分: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) 

通常我们会尝试避免重复连接(或附加)到数组,而是选择附加到列表。但在这种情况下,genfromtxt是一个足够大的操作,对于如何组合数组并不重要。

使用列表,循环将是:

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

列表理解基本上是相同的。