創建Numpy數組的不同方式


創建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執行快速數值數組計算的第一步。使用不同的方式創建數組,你現在可以很好地執行基本的數組操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM