繁体   English   中英

加载并连接numpy数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM