標(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)境如下圖所示:

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é)果如下圖所示:

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é)果如下圖:

從上面一段代碼可以看出:1.np.arange方法產(chǎn)生的一個(gè)ndarray對(duì)象,對(duì)象中的元素默認(rèn)為int32類型。
- 2^31 - 1的值為2147483647,如果int32類型超過這個(gè)值則算越界,越界后所得值為負(fù)數(shù)。
- 越界所得負(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))
