01_NumPy介绍,什么是NumPy,Python应用、(NumPy、SciPy、Matplotlib相关网址)--来自菜鸟和NumPy中文网
轉(zhuǎn)自:https://www.runoob.com/numpy/numpy-tutorial.html
https://www.numpy.org.cn/article/basics/understanding_numpy.html#什么是-numpy
(怕后面該網(wǎng)址沒有了,轉(zhuǎn)載作為自己的學(xué)習(xí)筆記)
1、NumPy教程
NumPy(Numerical Python) 是 Python 語言的一個(gè)擴(kuò)展程序庫,支持大量的維度數(shù)組與矩陣運(yùn)算,此外也針對數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫。
NumPy 的前身 Numeric 最早是由 Jim Hugunin 與其它協(xié)作者共同開發(fā),2005 年,Travis Oliphant 在 Numeric 中結(jié)合了另一個(gè)同性質(zhì)的程序庫 Numarray 的特色,并加入了其它擴(kuò)展而開發(fā)了 NumPy。NumPy 為開放源代碼并且由許多協(xié)作者共同維護(hù)開發(fā)。
NumPy是一個(gè)運(yùn)行速度非常快的數(shù)學(xué)庫,主要用于數(shù)組計(jì)算,包含:
?一個(gè)強(qiáng)大的N維數(shù)組對象ndarray
?廣播功能函數(shù)
?整合C/C++/Fortran代碼的工具
?線性代數(shù)、傅里葉函數(shù)、隨機(jī)數(shù)生成等功能
1.1、什么是Numpy?
NumPy是一個(gè)功能強(qiáng)大的Python庫,主要用于對多維數(shù)組執(zhí)行計(jì)算。NumPy這個(gè)詞來源于兩個(gè)單詞-- Numerical和Python。NumPy提供了大量的庫函數(shù)和操作,可以幫助程序員輕松地進(jìn)行數(shù)值計(jì)算。這類數(shù)值計(jì)算廣泛用于以下任務(wù):
機(jī)器學(xué)習(xí)模型:在編寫機(jī)器學(xué)習(xí)算法時(shí),需要對矩陣進(jìn)行各種數(shù)值計(jì)算。例如矩陣乘法、換位、加法等。NumPy提供了一個(gè)非常好的庫,用于簡單(在編寫代碼方面)和快速(在速度方面)計(jì)算。NumPy數(shù)組用于存儲(chǔ)訓(xùn)練數(shù)據(jù)和機(jī)器學(xué)習(xí)模型的參數(shù)。
圖像處理和計(jì)算機(jī)圖形學(xué):計(jì)算機(jī)中的圖像表示為多維數(shù)字?jǐn)?shù)組。NumPy成為同樣情況下最自然的選擇。實(shí)際上,NumPy提供了一些優(yōu)秀的庫函數(shù)來快速處理圖像。例如,鏡像圖像、按特定角度旋轉(zhuǎn)圖像等。
數(shù)學(xué)任務(wù):NumPy對于執(zhí)行各種數(shù)學(xué)任務(wù)非常有用,如數(shù)值積分、微分、內(nèi)插、外推等。因此,當(dāng)涉及到數(shù)學(xué)任務(wù)時(shí),它形成了一種基于Python的MATLAB的快速替代。
1.2、NumPy應(yīng)用
NumPy 通常與 SciPy(Scientific Python)和 Matplotlib(繪圖庫)一起使用, 這種組合廣泛用于替代 MatLab,是一個(gè)強(qiáng)大的科學(xué)計(jì)算環(huán)境,有助于我們通過 Python 學(xué)習(xí)數(shù)據(jù)科學(xué)或者機(jī)器學(xué)習(xí)。
SciPy 是一個(gè)開源的 Python 算法庫和數(shù)學(xué)工具包。
SciPy 包含的模塊有最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計(jì)算。
Matplotlib 是 Python 編程語言及其數(shù)值數(shù)學(xué)擴(kuò)展包 NumPy 的可視化操作界面。它為利用通用的圖形用戶界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向應(yīng)用程序嵌入式繪圖提供了應(yīng)用程序接口(API)。
1.3、相關(guān)鏈接
- NumPy 官網(wǎng) http://www.numpy.org/
- NumPy 源代碼:https://github.com/numpy/numpy
- SciPy 官網(wǎng):https://www.scipy.org/
- SciPy 源代碼:https://github.com/scipy/scipy
- Matplotlib 官網(wǎng):https://matplotlib.org/
- Matplotlib 源代碼:https://github.com/matplotlib/matplotlib
1.4 NumPy安裝
在你的計(jì)算機(jī)上安裝NumPy的最快也是最簡單的方法是在shell上使用以下命令:
pip install numpy這將在你的計(jì)算機(jī)上安裝最新/最穩(wěn)定的NumPy版本。通過PIP安裝是安裝任何Python軟件包的最簡單方法。現(xiàn)在讓我們來談?wù)凬umPy中最重要的概念,NumPy數(shù)組。
如果是Anacanda中使用conda安裝的話,命令是:
conda install numpy1.5 NumPy中的數(shù)組
NumPy提供的最重要的數(shù)據(jù)結(jié)構(gòu)是一個(gè)稱為NumPy數(shù)組的強(qiáng)大對象。NumPy數(shù)組是通常的Python數(shù)組的擴(kuò)展。NumPy數(shù)組配備了大量的函數(shù)和運(yùn)算符,可以幫助我們快速編寫上面討論過的各種類型計(jì)算的高性能代碼。讓我們看看如何快速定義一維NumPy數(shù)組:
# -*- coding: UTF-8 -*-import numpy as np my_array = np.array([1,2,3,4,5]) print(my_array)最后,運(yùn)行結(jié)果如下:
Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] Type 'copyright', 'credits' or 'license' for more information IPython 7.8.0 -- An enhanced Interactive Python. Type '?' for help. PyDev console: using IPython 7.8.0 Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] on win32 In[2]: runfile('E:/workspace/numpy/numpy/01_numpy數(shù)組.py', wdir='E:/workspace/numpy/numpy') [1 2 3 4 5]在上面的簡單示例中,我們首先使用import numpy作為np導(dǎo)入NumPy庫。然后,我們創(chuàng)建了一個(gè)包含5個(gè)整數(shù)的簡單NumPy數(shù)組,然后我們將其打印出來。繼續(xù)在自己的機(jī)器上試一試。在看 “NumPy安裝” 部分下面的步驟的時(shí)候,請確保已在計(jì)算機(jī)中安裝了NumPy。
現(xiàn)在讓我們看看我們可以用這個(gè)特定的NumPy數(shù)組能做些什么。
print(my_array.shape)它會(huì)打印我們創(chuàng)建的數(shù)組的形狀:(5,)。意思就是my_array是一個(gè)包含5個(gè)元素的數(shù)組。
我們也可以打印各個(gè)元素。就像普通的Python數(shù)組一樣,NumPy數(shù)組的起始索引編號為0.
運(yùn)行結(jié)果是:
1 2上述命令將分別在終端上打印1和2.我們還可以修改NumPy數(shù)組的元素。例如,加入我們編寫以下2個(gè)命令:
my_array[0] = -1 print(my_array)我們將在屏幕上看到:[-1 2 3 4 5]
現(xiàn)在假設(shè),我們要?jiǎng)?chuàng)建一個(gè)長度為5的NumPy數(shù)組,但所有元素都為0,我們可以這樣做嗎?是的。NumPy提供了一種簡單的方法來做同樣的事情。
我們將看到輸出了[0. 0. 0. 0. 0.]。與np.zeros類似,我們也有np.ones。如果我們想創(chuàng)建一個(gè)隨機(jī)值數(shù)組怎么辦?
my_random_array = np.random.random((5)) print(my_random_array)我們得到的輸出看起來像 [0.22051844 0.35278286 0.11342404 0.79671772 0.62263151] 這樣的數(shù)據(jù)。你獲得的輸出可能會(huì)有所不同,因?yàn)槲覀兪褂玫氖请S機(jī)函數(shù),它為每個(gè)元素分配0到1之間的隨機(jī)值。
現(xiàn)在讓我們看看如何使用NumPy創(chuàng)建二維數(shù)組。
my_2d_array = np.zeros((2,3)) print(my_2d_array)這里是:
[[0. 0. 0.][0. 0. 0.]]猜猜以下代碼的輸出結(jié)果如何:
my_2d_array_new = np.ones((2,4)) print(my_2d_array_new)這里是:
[[1. 1. 1. 1.][1. 1. 1. 1.]]基本上,當(dāng)你使用函數(shù)np.zeros()或np.ones()時(shí),你可以指定討論數(shù)組大小的元組。在上面的兩個(gè)例子中,我們使用以下元組,(2, 3) 和(2, 4) 分別表示2行,3列和4列。像上面那樣的多維數(shù)組可以用 my_array[i][j] 符號來索引,其中i表示行號,j表示列號。i和j都從0開始。
my_array = np.array([[4,5],[6,1]]) print(my_array) print(my_array[0][1])輸出結(jié)果是:
[[4 5][6 1]] 5上面的代碼片段的輸出是5,因?yàn)樗撬饕?行和索引1列中的元素。
你還可以按如下方式打印my_array的形狀:
輸出為(2,2),表示數(shù)組中有2行2列。
NumPy提供了一種提取多維數(shù)組的列/列的強(qiáng)大方法。例如,考慮我們上面定義的my_array的例子。
[[4,5],[6,1]]假設(shè),我們想從中提取第二列(索引1)的所有元素。在這里,我們?nèi)庋劭梢钥匆?#xff0c;第二列由兩個(gè)元素組成:5和1。為此,我們執(zhí)行以下操作:
my_array_column_2 = my_array[:,1] print(my_array_column_2)注意,我們使用了冒號(:)而不是行號,而對于列號,我們使用了值1,最終輸出是:[5, 1]。
我們可以類似地從多維NumPy數(shù)組中提取一行。現(xiàn)在,讓我們看看NumPy在多個(gè)數(shù)組上執(zhí)行計(jì)算時(shí)提供的強(qiáng)大功能。
1.6 NumPy中的數(shù)組操作
使用NumPy,你可以輕松在數(shù)組上執(zhí)行數(shù)學(xué)運(yùn)算。例如,你可以添加NumPy數(shù)組,你可以減去它們,你可以將它們相乘,甚至可以將它們分開。以下是一些例子:
# -*- coding: UTF-8 -*-import numpy as np a = np.array([[1.0, 2.0], [3.0, 4.0]]) b = np.array([[5.0, 6.0], [7.0, 8.0]]) sum = a + b difference = a - b product = a * b quotient = a / bprint("Sum = \n",sum) print("Difference = \n", difference) print("Product = \n", product) print("Quotient = \n", quotient)運(yùn)行結(jié)果:
Sum = [[ 6. 8.][10. 12.]] Difference = [[-4. -4.][-4. -4.]] Product = [[ 5. 12.][21. 32.]] Quotient = [[0.2 0.33333333][0.42857143 0.5 ]]如你所見,乘法運(yùn)算符執(zhí)行逐元素乘法而不是矩陣乘法。要執(zhí)行矩陣乘法,你可以執(zhí)行以下操作:
matrix_product = a.dot(b) print("Matrix Product = ",matrix_product)運(yùn)行結(jié)果:
Matrix Product = [[19. 22.][43. 50.]]總結(jié)
以上是生活随笔為你收集整理的01_NumPy介绍,什么是NumPy,Python应用、(NumPy、SciPy、Matplotlib相关网址)--来自菜鸟和NumPy中文网的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ambari2.7.0 + HDP3.1
- 下一篇: 福特汽车缸内直喷技术的英文缩写是?