一文讀懂numpy數(shù)組拼接方法及應(yīng)用場(chǎng)景
概述:
在數(shù)據(jù)處理和分析中,常常需要將多個(gè)numpy數(shù)組進(jìn)行拼接,以便進(jìn)行進(jìn)一步的處理和分析。numpy庫(kù)提供了多種數(shù)組拼接的方法,本文將介紹numpy數(shù)組的拼接方法及其應(yīng)用場(chǎng)景,并給出具體的代碼示例。
一、numpy數(shù)組拼接方法:
- np.concatenate
np.concatenate函數(shù)可以沿著指定的軸將兩個(gè)或多個(gè)數(shù)組拼接在一起,形成一個(gè)新的數(shù)組。語(yǔ)法如下:
np.concatenate((a1, a2, …), axis=0, out=None)
其中,a1, a2, …:需要拼接的數(shù)組;
axis:指定拼接的軸,默認(rèn)為0,表示沿著第一個(gè)軸進(jìn)行拼接;
out:拼接結(jié)果輸出的數(shù)組,如果未提供,則創(chuàng)建一個(gè)新數(shù)組返回。
示例代碼如下:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
c = np.concatenate((a, b), axis=0)
print(c)
輸出結(jié)果:
[[1 2]
[3 4]
[5 6]]
- np.vstack和np.row_stack
np.vstack函數(shù)將兩個(gè)或多個(gè)數(shù)組按垂直方向(行)堆疊在一起,形成一個(gè)新的數(shù)組。語(yǔ)法如下:
np.vstack(tup)
其中,tup:需要堆疊的數(shù)組元組。
np.row_stack函數(shù)與np.vstack函數(shù)的功能相同。
示例代碼如下:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.vstack((a, b))
print(c)
輸出結(jié)果:
[[1 2 3]
[4 5 6]]
- np.hstack和np.column_stack
np.hstack函數(shù)將兩個(gè)或多個(gè)數(shù)組按水平方向(列)堆疊在一起,形成一個(gè)新的數(shù)組。語(yǔ)法如下:
np.hstack(tup)
其中,tup:需要堆疊的數(shù)組元組。
np.column_stack函數(shù)與np.hstack函數(shù)的功能相同,但是可以處理一維數(shù)組。
示例代碼如下:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.hstack((a, b))
print(c)
輸出結(jié)果:
[1 2 3 4 5 6]
- np.dstack
np.dstack函數(shù)將兩個(gè)或多個(gè)數(shù)組按深度方向(沿Z軸)堆疊在一起,形成一個(gè)新的數(shù)組。語(yǔ)法如下:
np.dstack(tup)
其中,tup:需要堆疊的數(shù)組元組。
示例代碼如下:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.dstack((a, b))
print(c)
輸出結(jié)果:
[[[1 5]
[2 6]]
[[3 7]
[4 8]]]
二、應(yīng)用場(chǎng)景
- 數(shù)據(jù)合并
當(dāng)需要將多個(gè)數(shù)組按照一定的規(guī)則進(jìn)行合并,形成一個(gè)大數(shù)組時(shí),可以使用numpy的拼接方法。例如,在機(jī)器學(xué)習(xí)中,訓(xùn)練集和測(cè)試集往往是分開(kāi)的,需要將它們合并為一個(gè)數(shù)據(jù)集。
示例代碼如下:
import numpy as np
假設(shè)訓(xùn)練集已經(jīng)加載到變量train_data中,shape為(m, n1)
假設(shè)測(cè)試集已經(jīng)加載到變量test_data中,shape為(k, n1)
將訓(xùn)練集和測(cè)試集合并為一個(gè)數(shù)據(jù)集
data = np.concatenate((train_data, test_data), axis=0)
print(data.shape)
- 數(shù)據(jù)擴(kuò)充
在深度學(xué)習(xí)中,對(duì)訓(xùn)練樣本進(jìn)行數(shù)據(jù)擴(kuò)充是提高模型泛化能力的一種常見(jiàn)方法。可以使用numpy的拼接方法將一個(gè)樣本的多個(gè)擴(kuò)充樣本進(jìn)行合并。
示例代碼如下:
import numpy as np
假設(shè)樣本已經(jīng)加載到變量sample中,shape為(n, m)
對(duì)樣本進(jìn)行水平翻轉(zhuǎn)擴(kuò)充
flipped_sample = np.fliplr(sample)
對(duì)擴(kuò)充后的樣本進(jìn)行合并
augmented_sample = np.hstack((sample, flipped_sample))
print(augmented_sample.shape)
總結(jié):
本文介紹了numpy數(shù)組的拼接方法及其應(yīng)用場(chǎng)景。通過(guò)使用numpy的拼接方法,我們可以將多個(gè)數(shù)組進(jìn)行合并,以便進(jìn)行數(shù)據(jù)處理和分析。拼接方法包括np.concatenate、np.vstack、np.row_stack、np.hstack、np.column_stack和np.dstack,可以根據(jù)具體的需求選擇合適的方法。這些方法在數(shù)據(jù)合并和數(shù)據(jù)擴(kuò)充等應(yīng)用場(chǎng)景中非常常見(jiàn),能夠幫助我們更好地處理和分析數(shù)據(jù)。