我正在尝试连接从磁盘加载的一组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
这里我将结果初始化为带有零的数组,因为我无法连接到空数组。我需要避免在结果的开头附加这个零数组。怎么做到这一点?
答案 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)
列表理解基本上是相同的。