創建Numpy數組的不同方式
Numpy庫的核心是數組對象或ndarray對象(n維數組)。你將使用Numpy數組執行邏輯,統計和傅里葉變換等運算。作為使用Numpy的一部分,你要做的第一件事就是創建Numpy數組。本指南的主要目的是幫助數據科學愛好者了解可用於創建Numpy數組的不同方式。
創建Numpy數組有三種不同的方法:
使用Numpy內部功能函數
從列表等其他Python的結構進行轉換
使用特殊的庫函數
使用Numpy內部功能函數
Numpy具有用於創建數組的內置函數。 我們將在本指南中介紹其中一些內容。
創建一個一維的數組
首先,讓我們創建一維數組或rank為1的數組。arange是一種廣泛使用的函數,用於快速創建數組。將值20傳遞給arange函數會創建一個值范圍為0到19的數組。
import Numpy as np
array = np.arange(20)
array
輸出:
array([0, 1, 2, 3, 4,
5, 6, 7, 8, 9,
10, 11, 12, 13, 14,
15, 16, 17, 18, 19])
要驗證此數組的維度,請使用shape屬性。
array.shape
輸出:
(20,)
由於逗號后面沒有值,因此這是一維數組。 要訪問此數組中的值,請指定非負索引。 與其他編程語言一樣,索引從零開始。 因此,要訪問數組中的第四個元素,請使用索引3。
array[3]
輸出:
3
Numpy的數組是可變的,這意味着你可以在初始化數組后更改數組中元素的值。 使用print函數查看數組的內容。
array[3] = 100
print(array)
輸出:
[ 0 1 2 100
4 5 6 7
8 9 10 11
12 13 14 15
16 17 18 19]
與Python列表不同,Numpy數組的內容是同質的。 因此,如果你嘗試將字符串值分配給數組中的元素,其數據類型為int,則會出現錯誤。
array[3] ='Numpy'
輸出:
ValueError: invalid literal for int() with base 10: 'Numpy'
創建一個二維數組
我們來談談創建一個二維數組。 如果只使用arange函數,它將輸出一維數組。 要使其成為二維數組,請使用reshape函數鏈接其輸出。
array = np.arange(20).reshape(4,5)
array
輸出:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
首先,將創建20個整數,然后將數組轉換為具有4行和5列的二維數組。 我們來檢查一下這個數組的維數。
(4, 5)
由於我們得到兩個值,這是一個二維數組。 要訪問二維數組中的元素,需要為行和列指定索引。
array[3][4]
輸出:
19
創建三維數組及更多維度
要創建三維數組,請為重塑形狀函數指定3個參數。
array = np.arange(27).reshape(3,3,3)
array
輸出:
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
需要注意的是:數組中元素的數量(27)必須是其尺寸(3 * 3 * 3)的乘積。 要交叉檢查它是否是三維數組,可以使用shape屬性。
array.shape
輸出:
(3, 3, 3)
此外,使用arange函數,你可以創建一個在定義的起始值和結束值之間具有特定序列的數組。
np.arange(10, 35, 3)
輸出:
array([10, 13, 16, 19, 22, 25, 28, 31, 34])
使用其他Numpy函數
除了arange函數之外,你還可以使用其他有用的函數(如 zeros 和 ones)來快速創建和填充數組。
使用zeros函數創建一個填充零的數組。函數的參數表示行數和列數(或其維數)。
np.zeros((2,4))
輸出:
array([[0., 0., 0., 0.],
[0., 0., 0., 0.]])
使用ones函數創建一個填充了1的數組。
np.ones((3,4))
輸出:
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
empty函數創建一個數組。它的初始內容是隨機的,取決於內存的狀態。
np.empty((2,3))
輸出:
array([[0.65670626, 0.52097334, 0.99831087],
[0.07280136, 0.4416958 , 0.06185705]])
full函數創建一個填充給定值的n * n數組。
np.full((2,2), 3)
輸出:
array([[3, 3],
[3, 3]])
eye函數可以創建一個n * n矩陣,對角線為1s,其他為0。
np.eye(3,3)
輸出:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
函數linspace在指定的時間間隔內返回均勻間隔的數字。 例如,下面的函數返回0到10之間的四個等間距數字。
np.linspace(0, 10, num=4)
輸出:
array([ 0., 3.33333333, 6.66666667, 10.])
從Python列表轉換
除了使用Numpy函數之外,你還可以直接從Python列表創建數組。將Python列表傳遞給數組函數以創建Numpy數組:
array = np.array([4,5,6])
array
輸出:
array([4, 5, 6])
你還可以創建Python列表並傳遞其變量名以創建Numpy數組。
list = [4,5,6]
list
輸出:
[4, 5, 6]
array = np.array(list)
array
輸出:
array([4, 5, 6])
你可以確認變量array和list分別是Python列表和Numpy數組。
type(list)
list
type(array)
Numpy.ndarray
要創建二維數組,請將一系列列表傳遞給數組函數。
array = np.array([(1,2,3), (4,5,6)])
array
輸出:
array([[1, 2, 3],
[4, 5, 6]])
array.shape
輸出:
(2, 3)
使用特殊的庫函數
你還可以使用特殊庫函數來創建數組。例如,要創建一個填充0到1之間隨機值的數組,請使用random函數。這對於需要隨機狀態才能開始的問題特別有用。
np.random.random((2,2))
輸出:
array([[0.1632794 , 0.34567049],
[0.03463241, 0.70687903]])
總結
創建和填充Numpy數組是使用Numpy執行快速數值數組計算的第一步。使用不同的方式創建數組,你現在可以很好地執行基本的數組操作。