Python 加载并连接numpy数组

Python 加载并连接numpy数组,python,arrays,numpy,Python,Arrays,Numpy,我有几个numpy数组,我想读取它们并将它们连接在一起: 为了加载文件,我执行了以下操作: import numpy as np AVERAGE_files = glob.glob('*AVERAGE*') for AV in AVERAGE_files: x = np.load(AV) 现在对于串联,我知道我必须使用np.concatenate函数,但我不知道如何开始串联。我必须在循环之外声明一个np.zero数组吗 肯定是这样的吗 import numpy as np new =

我有几个numpy数组,我想读取它们并将它们连接在一起:

为了加载文件,我执行了以下操作:

import numpy as np
AVERAGE_files = glob.glob('*AVERAGE*')
for AV in AVERAGE_files:
    x = np.load(AV)

现在对于串联,我知道我必须使用
np.concatenate
函数,但我不知道如何开始串联。我必须在循环之外声明一个
np.zero
数组吗

肯定是这样的吗

import numpy as np

new = np.array([])

for AV in AVERAGE_files:
   x = np.load(AV) # I assume num in your example is an alias for numpy?
   new = np.concatenate([new,x])

如果已将各个数组作为
x1、x2、x3
加载,则可以使用

x = numpy.vstack((x1, x2, x3))

但是使用@areuexperience的串联技术可能更有效,因为您不保留单个
x1
s。

Numpy数组不能追加,只能复制。因此,
np.concatenate
生成一个新数组,除了额外的值外,该数组与旧数组相同。通过连续串联构造数组虽然是可能的,但不是一种有效的方法

如果已知文件的大小,则几乎可以肯定,您最好使用
np.zero
分配一个超出周期的数组,正如您所建议的:

import numpy as np
array = np.zeros([size])
for i in range(0,len(AVERAGE_files)):
    with open(AVERAGE_files[i]) as f: #assuming AV are strings?
       array[i] = map(float,f)      
或者,您可以构建一个列表(可以有效地附加到列表中),然后在末尾将其转换为数组:

import numpy as np
array = np.asarray([map(float,open(AV)) for AV in AVERAGE_files])

稍微更正一下:new=np.concatenate([new,x])谢谢。我是python scriptingFYI的新手,通常numpy是作为np导入的,而不是作为NUM导入的。这些数组的形状是什么?@hpaulj形状是(1),在我过去所做的计时中,整个列表上的一个串联更快。增量方法不会节省内存。