一.Numpy的使用
NumPy(Numeric Python)提供了許多高級的數(shù)值編程工具洒敏,如:矩陣數(shù)據(jù)類型龄恋、矢量處理,以及精密的運(yùn)算庫, 而且提供了python對多維數(shù)組對象的支持: ndarray, 也針對數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫凶伙。
導(dǎo)包
import numpy as np
>> np.__version__ # 查看numpy的版本號
(1) 創(chuàng)建ndarray
1. 使用np.array()
創(chuàng)建
實(shí)例:
# numpy和list類似,但是numpy中的數(shù)組功能更加強(qiáng)大
>> nd1 = np.array([2,4,6,'ll'])
array(['2','4','6','ll']) # 將類型統(tǒng)一為同一類型
>> print(type(nd1))
<class 'numpy.ndarray'>
注意:
numpy
中默認(rèn)ndarray
的所有元素的數(shù)據(jù)類型是相同的郭毕,如果數(shù)據(jù)類型不同, 會統(tǒng)一為同一類型, 優(yōu)先級str > float > int
。
2. 使用np
的routines
函數(shù)創(chuàng)建
(1) np.one(shape, dtype=None, order='C') 創(chuàng)建數(shù)組
根據(jù)所給的形狀和類型返回一個元素全部為1的數(shù)組, 默認(rèn)numpy.float64
類型
參數(shù):
shape: 定義返回元組的形狀, 傳入int或ints元組, 如果傳入int,返一維數(shù)組,如果傳入ints元組,返回多維數(shù)組镊靴。 例如:(2,3)或2
dtype: 定義的數(shù)據(jù)類型,可選參數(shù)铣卡。默認(rèn)numpy.float64。例如:numpy.int8
order: 可選, 返回多維數(shù)組時,內(nèi)存的排列方式
實(shí)例:
>> np.ones(shape=(5,4)) # 返回一個5行4列的數(shù)組,元素的內(nèi)容都為1
>> ones = np.ones(shape=(3,2,3), dtype=int) # 返回3個兩行三列都為1的數(shù)組
(2) np.zeros(shape, dtype=float,order='c')
返回根據(jù)給定的形狀和類型全部為0的數(shù)組
實(shí)例:
np.zeros(shape=(5,4)) # 返回一個5行4列都為0的數(shù)組
(3) np.full(shape,fill_value,dtype=None,order='C')
根據(jù)給定的形狀和所填充的值, 返回一個新的數(shù)組偏竟。
實(shí)例:
np.full(shape=(6,5,2), 1) # shape可以理解為6個5行2列的數(shù)組,并且都是使用1填充煮落。
(4) np.eye(N, M=None, k=0,dtype=float)
返回一個對角線為1,其他位置為0的數(shù)組,(可以理解為單位矩陣)
參數(shù):
N : 返回數(shù)組的行數(shù)
M : 可選, 返回的數(shù)組的列數(shù)。如果不指定踊谋,返回的數(shù)組行=列蝉仇。
k : 可選, 指定對角線的位置。
dtype : 可選, 返回數(shù)組的數(shù)據(jù)類型殖蚕。
實(shí)例:
np.eye(3,3) # 3行3列的數(shù)組,主對角線為1, 其余為0轿衔。
(5) np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
在指定的范圍內(nèi)返回均勻間隔的數(shù)字, 返回均勻分布的樣本。
參數(shù):
start: 序列的起始點(diǎn)
end: 序列的結(jié)束點(diǎn)
num: 生成的樣本數(shù), 默認(rèn)是50個睦疫。
實(shí)例:
np.linspace(1,10) # 50個元素的數(shù)組
np.linspace(1,10,10) # array([ 1.,2.,3., 4.,5.,6.,7.,8.,9.,10.]) -- 1-10分成10份
(6) np.arange([start,]stop,[step,]dtype=None)
類似python原生的range()方法,只不過返回的是array害驹。
實(shí)例:
np.arange(0,100,step=2) # 創(chuàng)建由偶數(shù)組成的數(shù)組
(7) np.random.randint(low,high=None, size=None, dtype="l")
生成在區(qū)間[low,high)上的隨機(jī)整數(shù)值;若high=None, 則取值區(qū)間變?yōu)閇0,low), size為最大長度, 為整形和整形元組。
實(shí)例:
np.random.randint(10,20) # 生成一個10-19之間的隨機(jī)值
np.random.randint(10,20,size=10) # 返回一個數(shù)組蛤育,包含10個隨機(jī)整數(shù)
np.random.randint(10,20,size=(2,3,4)) # 生成兩個3行4列的隨機(jī)值數(shù)組
(8) np.randn(d0,d1,...dn)
標(biāo)準(zhǔn)的正太分布,參數(shù)為維度
實(shí)例:
np.random.randn(10,5) # 如果只給第一個參數(shù)為一維宛官,給第二個參數(shù)為二維,...
(9) np.random.normal(loc=0.0, scale=1.0, size=None)
正太分布函數(shù)
參數(shù):
loc : 浮點(diǎn)型, 概率分布的均值, 對應(yīng)著整體分布的中心center
scale :浮點(diǎn)型, 概率分布的標(biāo)準(zhǔn)差
size : 整形或整形數(shù)組, 默認(rèn)為None, 只返回一個值
實(shí)例:
np.random.normal(175, scale=0, size=100) # 概率分布的標(biāo)準(zhǔn)差為0, 返回100個元素的數(shù)組, 元素都為175
np.random.normal(175, scale=100, size=100) # 100個正太分布元素
(10) np.random.random(size=None)
生成0到1的隨機(jī)數(shù)葫松。
實(shí)例:
np.random.random(size=(5,4)) # 5行4列
小例子:
圖片一般可以轉(zhuǎn)換為二維(灰色)或三維(彩色)的數(shù)組,下面我們利用所學(xué)的知識,隨機(jī)生成一個三維的圖片。
# 首先導(dǎo)包
import numpy as np
import matplotlib.pyplot as plt # 一個非常簡單的繪圖庫, 后面會說, 現(xiàn)在先用它底洗。
# 生成隨機(jī)數(shù)
random_pic = np.random.random(size=(273,410,3))
plt.imshow(random_pic) # 顯示
結(jié)果可想而知,應(yīng)該是這樣
二. ndarray的屬性
屬性:
ndim : 數(shù)組的維度
shape : 屬性的形狀(各維度的長度)
size : 總長度
dtype : 元素類型
三. ndarray的基本操作
(1) 索引
實(shí)例:
未完.....