我有几个numpy数组,我想读它们并将它们连接在一起:
为了加载文件我执行了以下操作:
import numpy as np
AVERAGE_files = glob.glob('*AVERAGE*')
for AV in AVERAGE_files:
x = np.load(AV)
现在连接我知道我必须使用np.concatenate
函数,但我不知道如何开始连接。我是否必须在循环之外声明np.zeros
数组?
答案 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])