加载并连接numpy数组

时间:2015-09-17 10:06:53

标签: 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.zeros数组?

3 个答案:

答案 0 :(得分:3)

当然是这样的?

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])

答案 1 :(得分:2)

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

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

但使用@ areuexperienced的串联技术可能更有效率,因为你没有保留个人x1

答案 2 :(得分:1)

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

如果知道文件的大小,你几乎肯定会更好地分配一个np.zeros的数组,如你所说:

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])