簡體   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