Python 加载并连接numpy数组
我有几个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 =
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),在我过去所做的计时中,整个列表上的一个串联更快。增量方法不会节省内存。