一、Python數組基礎
在開始探究Python中的數組操作函數前,有必要簡單了解一下Python中的數組基礎知識。Python中數組也稱為列表(list),可以使用方括號([])定義,其中元素之間使用逗號(,)分隔。
>>> a = [1, 2, 3, 4, 5]
>>> print(a)
[1, 2, 3, 4, 5]
可以使用下標(索引)訪問數組中的元素,Python中的下標是從0開始的。
>>> print(a[0])
1
>>> print(a[4])
5
二、Python中的數組合併方法
如果需要將多個數組合併成一個數組,Python中提供了多種方法。
1、使用「+」符號
可以使用「+」符號將兩個數組合併成一個數組。
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = a + b
>>> print(c)
[1, 2, 3, 4, 5, 6]
2、使用extend()方法
使用extend()方法可以將一個數組的元素添加到另一個數組中。
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a.extend(b)
>>> print(a)
[1, 2, 3, 4, 5, 6]
3、使用*號
可以使用*號將一個數組重複多次來實現多個數組的合併。
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = a * 2 + b * 3
>>> print(c)
[1, 2, 3, 1, 2, 3, 4, 5, 6, 4, 5, 6, 4, 5, 6]
4、使用append()方法
使用append()方法只能將一個元素添加到數組的末尾位置,並不能實現多個數組的合併。
三、Python中的高級數組合併函數——numpy.concatenate()
雖然以上方法可以實現多個數組的合併,但是需要使用多行代碼,並且有一些限制,比如只能按照一定的順序合併等等。而在numpy模塊中有一個函數——numpy.concatenate(),可以一行代碼完成多個數組的合併,並且可以自由指定合併的順序。
1、numpy.concatenate()的用法
numpy.concatenate()函數的基本參數如下:
- arrays: 需要合併的數組,要求至少傳入一個數組。
- axis: 合併的軸向,默認為0,表示沿着第一個維度(即行)進行合併,如果傳入1則表示沿着第二個維度(即列)進行合併。
- out: 可選參數,合併後的輸出結果。
下面是numpy.concatenate()函數的使用示例:
>>> 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)
[[1, 2],
[3, 4],
[5, 6]]
上面的代碼中,我們使用了numpy模塊中的array()函數創建了兩個二維數組a和b,然後使用numpy.concatenate()函數將它們沿着第一個維度(即行)進行合併,得到了一個三行兩列的二維數組c。
2、numpy.concatenate()更多示例
2.1 沿着不同軸向合併
numpy.concatenate()函數可以沿着不同的軸向進行合併,具體使用如下:
>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6], [7, 8]])
>>> c = np.concatenate((a, b), axis=0)
>>> print(c)
[[1, 2],
[3, 4],
[5, 6],
[7, 8]]
>>> d = np.concatenate((a, b), axis=1)
>>> print(d)
[[1, 2, 5, 6],
[3, 4, 7, 8]]
上面的代碼中,我們使用了numpy模塊中的array()函數創建了兩個二維數組a和b,然後分別使用numpy.concatenate()函數將它們沿着第一個維度(即行)和第二個維度(即列)進行合併,得到了兩個新的二維數組c和d。
2.2 將多個數組進行合併
numpy.concatenate()函數可以接受多個數組作為參數,將它們合併成一個數組,具體使用如下:
>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6], [7, 8]])
>>> c = np.array([[9, 10], [11, 12]])
>>> d = np.concatenate((a, b, c), axis=1)
>>> print(d)
[[ 1, 2, 5, 6, 9, 10],
[ 3, 4, 7, 8, 11, 12]]
上面的代碼中,我們使用了numpy模塊中的array()函數創建了三個二維數組a、b和c,然後使用numpy.concatenate()函數將它們沿着第二個維度(即列)進行合併,得到了一個新的二維數組d。
四、numpy.stack()函數
在numpy模塊中還有一個函數——numpy.stack(),可以將多個數組在某個新軸向上進行堆疊,也可以實現多個數組的合併。
1、numpy.stack()函數的用法
numpy.stack()函數的參數和numpy.concatenate()函數類似,不同的是它可以在新的軸向上進行堆疊。具體使用如下:
>>> a = np.array([1, 2, 3])
>>> b = np.array([4, 5, 6])
>>> c = np.array([7, 8, 9])
>>> d = np.stack((a, b, c), axis=1)
>>> print(d)
[[1, 4, 7],
[2, 5, 8],
[3, 6, 9]]
上面的代碼中,我們使用了numpy.stack()函數將三個一維數組a、b和c沿着第二個軸向進行堆疊,得到了一個新的二維數組d。
2、numpy.stack()函數更多示例
2.1 沿着不同軸向堆疊
除了上面的示例外,numpy.stack()函數還可以沿着不同軸向堆疊。具體使用如下:
>>> a = np.array([1, 2, 3])
>>> b = np.array([4, 5, 6])
>>> c = np.array([7, 8, 9])
>>> d = np.stack((a, b, c), axis=0)
>>> print(d)
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
上面的代碼中,我們使用了numpy.stack()函數將三個一維數組a、b和c沿着第一個軸向進行堆疊,得到了一個新的二維數組d。
2.2 使用numpy.stack()函數實現多個數組的合併
與numpy.concatenate()函數類似,numpy.stack()函數也可以理解成將多個數組按照一定的方式合併為一個更大的數組。具體使用如下:
>>> a = np.array([1, 2, 3])
>>> b = np.array([4, 5, 6])
>>> c = np.array([7, 8, 9])
>>> d = np.stack((a, b, c))
>>> print(d)
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
上面的代碼中,我們使用了numpy.stack()函數將三個一維數組a、b和c進行堆疊,並且沒有指定軸向,默認沿着第一個維度進行堆疊,得到了一個新的二維數組d。
五、總結
Python中數組操作函數可以讓我們在處理多個數組時提高效率和代碼的簡潔程度。使用「+」符號、extend()方法、*號等方法可以實現數組的合併,但是使用時需要注意一些限制。而在numpy模塊中,有numpy.concatenate()和numpy.stack()函數,可以實現更加高效、靈活和多樣化的數組合併操作。
原創文章,作者:IADI,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/143555.html