我有幾個numpy的陣列,我想讀的他們,將它們連接起來一起:負載並連接numpy的陣列
對於加載的文件,我做了以下內容:
import numpy as np
AVERAGE_files = glob.glob('*AVERAGE*')
for AV in AVERAGE_files:
x = np.load(AV)
現在的級聯我知道我必須使用np.concatenate
函數,但我不知道如何開始拼接。我需要在循環之外聲明np.zeros
數組嗎?
我有幾個numpy的陣列,我想讀的他們,將它們連接起來一起:負載並連接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])
只是一點點更正:new = np.concatenate([new,x])謝謝。我是新的python腳本 – CatarinaCM
你是正確的,相應編輯。祝你好運。 – areuexperienced
這隻適用於'x'只是1d。 – hpaulj
如果你已經有了加載x1, x2, x3
單獨的陣列,可以使用
x = numpy.vstack((x1, x2, x3))
但它可能是更有效地使用像@ areuexperienced的拼接技術,因爲你不保持個人x1
秒。
在過去的時間裏,整個列表中的一個連接速度更快。增量方法不會節省內存。 – hpaulj
Numpy數組不能附加到,只能複製。因此np.concatenate
導致新的陣列除了額外的值之外與舊的陣列相同。通過連續的連接構造一個數組,雖然當然可行,但這不是一種有效的方法。
如果文件的大小是已知的,你幾乎肯定是更好分配與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])
FYI,通常numpy的導入爲NP,不爲num –
什麼這些陣列的形狀? – hpaulj
@hpaulj的形狀是(1,) – CatarinaCM