[英]Load and concatenate numpy arrays
我有几个numpy数组,我想读它们并将它们连接在一起:
为了加载文件,我做了以下事情:
import numpy as np
AVERAGE_files = glob.glob('*AVERAGE*')
for AV in AVERAGE_files:
x = np.load(AV)
现在为了连接,我知道我必须使用np.concatenate
函数,但我不知道如何启动连接。 我是否必须在循环之外声明一个np.zeros
数组?
肯定就是这样的?
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))
但是使用类似@ areuexperienced的连接技术可能更有效,因为你不保留单独的x1
。
Numpy数组不能追加,只能复制。 因此, np.concatenate
产生一个新的数组,除了额外的值之外,它与旧数组相同。 通过连续串联构造数组虽然可能,但并不是一种有效的方法。
如果知道文件的大小,你几乎肯定会更好地分配np.zeros
不在循环中的数组,如你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])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.