第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁(yè) 慕課教程 NumPy 入門教程 NumPy 入門教程 Numpy 數(shù)組高階操作函數(shù)(上)

數(shù)組高階操作函數(shù)(上)

Numpy 提供了一系列針對(duì)數(shù)組操作的高階函數(shù)。其中一類比較常見(jiàn)的是數(shù)組的合并。

1. 數(shù)組的合并與堆疊

1.1 numpy.concatenate 函數(shù)

numpy.concatenate 函數(shù)用于沿指定軸連接兩個(gè)或多個(gè)相同形狀的數(shù)組。該函數(shù)的原型如下:

numpy.concatenate((a1, a2, ...), axis=0)

參數(shù)說(shuō)明如下:

參數(shù) 說(shuō)明
a1,a2 … 相同類型的數(shù)組序列
axis 連接數(shù)組的軸的方向,默認(rèn)值為0

案例

創(chuàng)建大小為 2×2 的二維數(shù)組 a 和 b:

a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])

查看數(shù)組:

print("數(shù)組a:")
print(a)
print("數(shù)組b:")
print(b)

打印結(jié)果為:

數(shù)組a:
[[1 2]
 [3 4]]
數(shù)組b:
[[5 6]
 [7 8]]

利用 concatenate 函數(shù)進(jìn)行垂直方向的合并:

np.concatenate((a, b), axis=0)
out:
    array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

上述語(yǔ)句實(shí)現(xiàn)了:沿著 axis=0(對(duì)于二維數(shù)組,顯示為垂直)方向合并,合并的結(jié)果在垂直方向的維數(shù)擴(kuò)充到 4,整個(gè)結(jié)果的數(shù)組大小為 4×2。

利用 concatenate 函數(shù)進(jìn)行水平方向的合并:

np.concatenate((a, b), axis=1)
out:
    array([[1, 2, 5, 6],
       [3, 4, 7, 8]])

上述語(yǔ)句實(shí)現(xiàn)了:沿著 axis=1(對(duì)于二維數(shù)組,顯示為水平)方向合并,合并的結(jié)果在水平方向的維數(shù)擴(kuò)充到 4,整個(gè)結(jié)果的數(shù)組大小為 1×4。

通過(guò)觀察上述過(guò)程,可以發(fā)現(xiàn):concatenate 可以實(shí)現(xiàn)數(shù)組沿著某一軸向進(jìn)行合并,合并后數(shù)組的維度保持不變。

案例

numpy.concatenate 函數(shù)可以一次性拼接多個(gè)數(shù)組:

np.concatenate((a, b, a, b), axis=1)
out:
    array([[1, 2, 5, 6, 1, 2, 5, 6],
       [3, 4, 7, 8, 3, 4, 7, 8]])

concatenate 函數(shù)可以接收不定長(zhǎng)的數(shù)組序列,并按照指定的軸進(jìn)行合并。

1.2 numpy.stack函數(shù)

numpy.stack 函數(shù)沿指定軸連接數(shù)組序列,該函數(shù)的原型如下:

numpy.stack((a1, a2, ...), axis=0)

參數(shù)說(shuō)明如下:

參數(shù) 說(shuō)明
a1,a2 … 相同類型的數(shù)組序列
axis 連接數(shù)組的軸的方向,默認(rèn)值為0

案例

仍然指定拼接方向?yàn)?axis=0 方向,觀察與 concatenate 函數(shù)的區(qū)別:

np.stack((a, b), axis=0)

該語(yǔ)句實(shí)現(xiàn)了把數(shù)據(jù) a 和 b 在 axis=0(最外層)增加一層,進(jìn)行堆疊:

array([[[1, 2],
        [3, 4]],

       [[5, 6],
        [7, 8]]])

堆疊的結(jié)果為三維數(shù)組,其中 axis=0 方向(最外層)的組成元素分別對(duì)應(yīng)為 a 和 b。

案例

指定拼接方向?yàn)?axis=1 方向,觀察與 concatenate 函數(shù)的區(qū)別:

np.stack((a, b), axis=1)

該語(yǔ)句實(shí)現(xiàn)了把數(shù)據(jù) a 和 b 在 axis=1 增加一層,再進(jìn)行堆疊:

array([[[1, 2],
        [5, 6]],

       [[3, 4],
        [7, 8]]])

具體堆疊過(guò)程可以按照拆解為如下步驟:

  1. 數(shù)組 a 和 b分別由 2×2 擴(kuò)充為 2×1×2,在 axis=1 的維度實(shí)現(xiàn)了擴(kuò)充;
  2. 在擴(kuò)充的軸上進(jìn)行堆疊,即在 axis=1 的軸上進(jìn)行堆疊。

1.3 numpy.hstack 函數(shù)

對(duì)于二維數(shù)組,在水平方向進(jìn)行堆疊,但是數(shù)組的維度保持不變。函數(shù)效果等價(jià)于numpy.concatenate((a1, a2, …), axis=1)。

案例

利用 hstack 函數(shù)合并數(shù)組 a 和 b:

np.hstack((a,b))
out:
    array([[1, 2, 5, 6],
       [3, 4, 7, 8]])

上述效果與 np.concatenate((a, b), axis=1) 完全一致。

1.4 numpy.vstack函數(shù)

對(duì)于二維數(shù)組,在垂直方向進(jìn)行堆疊,但是數(shù)組的維度保持不變。函數(shù)效果等價(jià)于numpy.concatenate((a1, a2, …), axis=0)。

案例

利用 hstack 函數(shù)合并數(shù)組 a 和 b:

np.vstack((a,b))
out:
    array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

上述效果與np.concatenate((a, b), axis=0)完全一致。

2. 小結(jié)

本節(jié)講述了數(shù)組合并與堆疊的幾種常用方法,其中concatenate函數(shù)與stack函數(shù)需要在使用中指定具體的計(jì)算方向,而vstack和hstack則默認(rèn)了合并方向,使用過(guò)程中注意區(qū)分。