NumPy構(gòu)成了數(shù)據(jù)科學(xué)領(lǐng)域中許多Python庫的基礎(chǔ)。

關(guān)于數(shù)據(jù)科學(xué)的一切都始于數(shù)據(jù),數(shù)據(jù)以各種形式出現(xiàn)。數(shù)字、圖像、文本、x射線、聲音和視頻記錄只是數(shù)據(jù)源的一些例子。無論數(shù)據(jù)采用何種格式,都需要將其轉(zhuǎn)換為一組待分析的數(shù)字。因此,有效地存儲(chǔ)和修改數(shù)字?jǐn)?shù)組在數(shù)據(jù)科學(xué)中至關(guān)重要。
NumPy (Numerical Python)是一個(gè)科學(xué)計(jì)算包,它提供了許多創(chuàng)建和操作數(shù)字?jǐn)?shù)組的方法。它構(gòu)成了許多與數(shù)據(jù)科學(xué)相關(guān)的廣泛使用的Python庫的基礎(chǔ),比如panda和Matplotlib。
在這篇文章中,我將介紹20種常用的對(duì)NumPy數(shù)組的操作。這些操作可分為4個(gè)主要類別:
創(chuàng)建數(shù)組
操作數(shù)組
數(shù)組合并
帶數(shù)組的線性代數(shù)
首先就是需要引入numpy的包
import numpy as np
1
創(chuàng)建數(shù)組
1.特定范圍內(nèi)的隨機(jī)整數(shù)

第一個(gè)參數(shù)決定了范圍的上限。下界默認(rèn)為0,但我們也可以指定它。size參數(shù)用于指定所需的大小。

我們創(chuàng)建了一個(gè)由2到10之間的整數(shù)組成的3x2數(shù)組。
2. 0到1之間的隨機(jī)浮點(diǎn)數(shù)

浮點(diǎn)數(shù)在0和1之間的一維數(shù)組。可以用于創(chuàng)建隨機(jī)噪聲數(shù)據(jù)。
3. 一個(gè)標(biāo)準(zhǔn)正態(tài)分布的樣本
randn()用于從一個(gè)標(biāo)準(zhǔn)正態(tài)分布(即零均值和單位方差)創(chuàng)建一個(gè)樣本。

我們創(chuàng)建了一個(gè)有100個(gè)浮點(diǎn)數(shù)的數(shù)組。
4. 1和0的矩陣
一個(gè)矩陣可以被認(rèn)為是一個(gè)二維數(shù)組。我們可以用 np.zeros和np.ones構(gòu)造一個(gè)0或1的矩陣

我們只需要確定矩陣的維數(shù),就可以進(jìn)行矩陣的創(chuàng)建。
5. 單位矩陣
單位矩陣是一個(gè)對(duì)角線為1,其他位置為0的方陣(nxn)??梢杂肗p.eye 或 np.identity來創(chuàng)建。

6. Arange
Arange函數(shù)用于在指定的時(shí)間間隔內(nèi)創(chuàng)建具有均勻間隔順序值的數(shù)組。我們可以指定起始值、停止值和步長。

默認(rèn)的起始值是零,默認(rèn)的步長是1。

7. 只有一個(gè)值的數(shù)組
我們可以使用np.full創(chuàng)建在每個(gè)位置具有相同值的數(shù)組。

我們需要指定要填充的大小和數(shù)字。此外,可以使用dtype參數(shù)更改數(shù)據(jù)類型。默認(rèn)數(shù)據(jù)類型為整數(shù)。
操作數(shù)組
讓我們首先創(chuàng)建一個(gè)二維數(shù)組:

8. 扁平化
Ravel函數(shù)使數(shù)組扁平化(即轉(zhuǎn)換為一維數(shù)組)。

默認(rèn)情況下,數(shù)組是通過逐行添加來扁平化的。通過將order參數(shù)設(shè)置為F (類fortran),可以將其更改為列。
9. 重塑
使用reshape函數(shù),它會(huì)對(duì)數(shù)組進(jìn)行重塑。A的形狀是(3,4)大小是12。

可以指定每個(gè)維度上的大小,只要保證與原大小相同即可

我們不需要指定每個(gè)維度的大小。我們可以讓NumPy通過-1來求維數(shù)。

10. 轉(zhuǎn)置
矩陣的轉(zhuǎn)置就是變換行和列。

11. Vsplit
將數(shù)組垂直分割為多個(gè)子數(shù)組。

我們將一個(gè)4x3的數(shù)組分成兩個(gè)形狀為2x3的子數(shù)組。
我們可以在分割后訪問特定的子數(shù)組。

我們將一個(gè)6x3的數(shù)組分成3個(gè)子數(shù)組,得到第一個(gè)數(shù)組。
12. Hsplit
它與vsplit類似,但是水平工作的。

如果我們?cè)谝粋€(gè)6x3數(shù)組上應(yīng)用hsplit得到3個(gè)子數(shù)組,得到的數(shù)組的形狀將是(6,1)。

數(shù)組合并
在某些情況下,我們可能需要組合數(shù)組。NumPy提供了以多種不同方式組合數(shù)組的函數(shù)和方法。
13. 連接
這與pandas的合并的功能很相似。
我們可以使用重塑函數(shù)將這些數(shù)組轉(zhuǎn)換為列向量,然后進(jìn)行垂直連接。
14. Vstack
它用于垂直堆疊數(shù)組(行在彼此之上)。
它也適用于高維數(shù)組。
15. Hstack
類似于vstack,但是是水平工作的(按列排列)。
使用NumPy數(shù)組的線性代數(shù)(NumPy .linalg)
線性代數(shù)是數(shù)據(jù)科學(xué)領(lǐng)域的基礎(chǔ)。NumPy作為使用最廣泛的科學(xué)計(jì)算庫,提供了大量的線性代數(shù)運(yùn)算。
16. Det
返回一個(gè)矩陣的行列式。
矩陣必須是方陣(即行數(shù)等于列數(shù))才能計(jì)算行列式。對(duì)于高維數(shù)組,最后兩個(gè)維度必須是正方形。
17. Inv
計(jì)算矩陣的逆。
矩陣的逆矩陣是與原矩陣相乘得到單位矩陣的矩陣。不是每個(gè)矩陣都有逆矩陣。如果矩陣A有一個(gè)逆矩陣,則稱為可逆或非奇異。
18. Eig
計(jì)算一個(gè)方陣的特征值和右特征向量。
19. 點(diǎn)積
計(jì)算兩個(gè)向量的點(diǎn)積,這是關(guān)于它們的位置的元素的乘積的和。第一個(gè)向量的第一個(gè)元素乘以第二個(gè)向量的第一個(gè)元素,以此類推。
20. 矩陣相乘
Matmul 矩陣乘法。
我們已經(jīng)討論了NumPy的基本操作。在NumPy上有更高級(jí)的操作,但最好先理解基礎(chǔ)操作。