Numpy入門

標(biāo)題中的英文首字母大寫比較規(guī)范,但在python實(shí)際使用中均為小寫。
2018年7月23日筆記

0. 學(xué)習(xí)內(nèi)容:

Python科學(xué)計(jì)算庫(kù):Numpy需要掌握的知識(shí):
1.Numpy簡(jiǎn)介;2.Numpy程序包;3.簡(jiǎn)單的Numpy程序;4.為什么使用Numpy;
5.Numpy是什么;6.Numpy數(shù)據(jù)溢出;

1. Numpy簡(jiǎn)介

Numpy是python語言中的科學(xué)計(jì)算庫(kù)。
下文主要介紹數(shù)據(jù)科學(xué)工具包Numpy的基本用法,內(nèi)容包括:
1.Numpy的ndarray多維數(shù)組創(chuàng)建
2.Numpy的ndarray多維數(shù)組索引切片訪問
3.Numpy的ndarray多維數(shù)組的組合分割

2. Numpy程序包

集成開發(fā)環(huán)境為Jupyter notebook
語言及其版本為python3.6
安裝numpy在cmd中運(yùn)行命令:pip install numpy,如果電腦安裝了最新版的anaconda,則自帶jupyter notebook和numpy庫(kù)。
集成開發(fā)環(huán)境如下圖所示:


image_1cj3s95tl1rsg1hlm1fatkhl12bj9.png-24kB
image_1cj3s95tl1rsg1hlm1fatkhl12bj9.png-24kB

3.簡(jiǎn)單的Numpy程序

兩個(gè)一維矩陣做加法
matrix1 = [0,1,4]
matrix2 = [0,1,8]
matrix3 = [0,2,12]

#使用python原有的列表和推導(dǎo)式
matrix1 = [0,1,4]
matrix2 = [0,1,8]
matrix3 = [a+b for a,b in zip(matrix1,matrix2)]
print(matrix3,type(matrix3))
#使用numpy庫(kù)計(jì)算
import numpy
matrix1 = numpy.arange(3) ** 2
matrix2 = numpy.arange(3) ** 3
matrix3 = matrix1 + matrix2
print(matrix3,type(matrix3))

代碼及其運(yùn)行結(jié)果如下圖所示:


image_1cj3sskqr1t6p19dm1so8aodibh13.png-31.5kB
image_1cj3sskqr1t6p19dm1so8aodibh13.png-31.5kB

4.為什么使用Numpy

原因有以下3點(diǎn):
1.對(duì)于同樣的數(shù)值計(jì)算任務(wù),由于Numpy能夠直接對(duì)數(shù)組和矩陣進(jìn)行操作,可以省略很多循環(huán)語句使用Numpy要比直接編寫Python代碼便捷得多;
2.Numpy中數(shù)組的存儲(chǔ)效率和輸入輸出性能均遠(yuǎn)遠(yuǎn)優(yōu)于Python中等價(jià)的數(shù)據(jù)結(jié)構(gòu);
3.Numpy的大部分代碼都是用C語言寫的,這使得Numpy比純Python代碼高效得多。

5.Numpy是什么

Numpy的全名為Numeric Python,是一個(gè)開源的科學(xué)計(jì)算庫(kù),它包括:
1.一個(gè)強(qiáng)大的N維數(shù)組對(duì)象ndarray;2.比較成熟的函數(shù)庫(kù);
3.用于整合C/C++和Fortran代碼的工具包;4.實(shí)用的線性代數(shù)、傅里葉變換和隨機(jī)生成函數(shù)。
Numpy支持高維度數(shù)組計(jì)算和矩陣計(jì)算,此外也針對(duì)了數(shù)組提供了大量的科學(xué)函數(shù)庫(kù)。

6.Numpy數(shù)據(jù)溢出

import numpy as np
matrix = np.arange(1292) ** 3
print(matrix.dtype)
print(matrix[-3:])
print(2 ** 32 - 1291 ** 3)

代碼及其運(yùn)行結(jié)果如下圖:


image_1cj3u1bb713t11jlkjsp1tmjih41t.png-15.8kB
image_1cj3u1bb713t11jlkjsp1tmjih41t.png-15.8kB

從上面一段代碼可以看出:1.np.arange方法產(chǎn)生的一個(gè)ndarray對(duì)象,對(duì)象中的元素默認(rèn)為int32類型。

  1. 2^31 - 1的值為2147483647,如果int32類型超過這個(gè)值則算越界,越界后所得值為負(fù)數(shù)。
  2. 越界所得負(fù)數(shù)的絕對(duì)值 + 原本值 = 2 ** 32。

練習(xí)

利用Numpy實(shí)現(xiàn)兩個(gè)向量相乘的結(jié)果
有兩種解答方法:1.利用np.dot方法,需要2個(gè)參數(shù),1個(gè)參數(shù)數(shù)據(jù)類型為ndarray,長(zhǎng)度要相同。
2.利用ndarray對(duì)象的dot方法,需要1個(gè)參數(shù),參數(shù)數(shù)據(jù)類型為ndarray,長(zhǎng)度要相同。
下面代碼中有兩種解答方法的示例。

import numpy as np
matrix1 = np.arange(10) 
print(matrix1)
matrix2 = np.arange(10,20)
print(matrix2)
print(np.dot(matrix1,matrix2))
print(matrix1.dot(matrix2))
image_1cja6gt6rp7orhr1rq712jff899.png-41.1kB
image_1cja6gt6rp7orhr1rq712jff899.png-41.1kB
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容