numpy是python語言的乙個擴充程式庫。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫。numpy內部解除了python的pil(全域性直譯器鎖),運算效率極好,是大量機器學習框架的基礎庫!
arr = np.array([1
,2,3
,4,5
])arr.shape #顯示的是維數,以元祖的形式輸出
np.dtype(object, align, copy)
名稱描述
object
要轉換為的資料型別物件
align
如果為 true,填充欄位使其類似 c 的結構體。
copy
複製 dtype 物件 ,如果為 false,則是對內建資料型別物件的引用
numpy.empty(shape, dtype = float, order = 『c』)
numpy.empty 方法用來建立乙個指定形狀(shape)、資料型別(dtype)且未初始化的陣列:
引數描述
shape
陣列形狀
dtype
資料型別,可選
order
有"c"和"f"兩個選項,分別代表,行優先和列優先,在計算機記憶體中的儲存元素的順序。
np.ones(shape,dtype=none,order=『c』)
建立指定形狀的陣列,陣列元素以 1 來填充
引數描述
shape
陣列形狀
dtype
資料型別,可選
order
『c』 用於 c 的行陣列,或者 『f』 用於 fortran 的列陣列
func = np.ones(shape=(5
,4),dtype=
int)
#建立的是乙個5行4列的二維陣列
**執行後顯示的是一張白色
ones= np.ones(shape=
(100,80
,3),dtype=
float
)plt.imshow(ones)
plt.show(
)
np.zeros(shape,dtype=float,order=『c』)
引數描述
shape
陣列形狀
dtype
資料型別,可選
order
『c』 用於 c 的行陣列,或者 『f』 用於 fortran 的列陣列
語法要求沒有那麼嚴格,輸出的是乙個四維陣列,預設值全部使用0填充
zeros = np.zeros((4
,4))
np.full(shape,fill_value,dtype=none,order=『c』)
建立的是乙個陣列,預設值是用fill_value的值進行填充
full = np.full((10
,10),fill_value=
1024
)
np.eye(n,m=none,k=0,dtype=float)
建立乙個n維陣列,對角線為1其他位置為0,建立的是乙個滿秩的矩陣
eye = np.eye(
10,dtype=
int)
np.linspace(start,stop,num=50,endpoint=true,retstep=flase,dtype=none)數描述
tart
序列的起始值
top序列的終止值,如果endpoint為true,該值包含於數列中
um要生成的等步長的樣本數量,預設為50
ndpoint
該值為 ture 時,數列中中包含stop值,反之不包含,預設是true。
etstep
如果為 true 時,生成的陣列中會顯示間距,反之不顯示。
type
ndarray 的資料型別
函式用於建立乙個一維陣列,陣列是乙個等差數列構成的
lins = np.linspace(1,
100,
20)
np.arange(start,stop,step,dtype=none)
引數描述
start
起始值,預設為0
stop
終止值(不包含)
step
步長,預設為1
dtype
返回ndarray的資料型別,如果沒有提供,則會使用輸入資料的型別。
根據 start 與 stop 指定的範圍以及 step 設定的步長,生成乙個 ndarray。使用改方法創造ndarray時候,左閉右開
ara = np.arange(0,
50,2)
np.logspace(start, stop, num=50, endpoint=true, base=10.0, dtype=none)
base 引數意思是取對數的時候 log 的下標。
引數描述
start
序列的起始值為:base ** start
stop
序列的終止值為:base ** stop。如果endpoint為true,該值包含於數列中
num要生成的等步長的樣本數量,預設為50
endpoint
該值為 ture 時,數列中中包含stop值,反之不包含,預設是true。
base
對數 log 的底數。
dtype
ndarray 的資料型別
函式用於建立乙個於等比數列
np.random.randint(low,high=none,size=none,dtype=『1』)
生成隨機數,在0到100之間隨機生成5個隨機數
ran = np.random.randint(0,
100,size=
5)
np.random.randn(d0,d1,d2,d3,…,dn)
生成的是標準正態分佈
randn = np.random.randn(
100)
np.random.normal(loc=0.0,scale=1.0,size=none)
生成的也是乙個正態分佈,只不過這個中間值是自己可以指定,當scale的值越大時,資料的波動就會越大
normal = np.random.normal(loc=170,scale=50,size=100)
np.random.random(size=none)
生成0到1的隨機數
eg:使用隨機數生成一張,數字3表示的是生成的是三維的
r = np.random.random(size=
(200
,300,3
))plt.imshow(r)
plt.show(
)
級聯
np.concatenate()級聯需要注意的點:
np.hstack:水平級聯
np.vstack:垂直級聯
ndarray的排序
scipy
scipy是構建在numpy的基礎之上的,它提供了許多的操作numpy的陣列的函式。scipy是一款方便、易於使用、專為科學和工程設計的python工具包,它包括了統計、優化、整合以及線性代數模組、傅利葉變換、訊號和影象圖例,常微分方差的求解等處理
import numpy as np
import pandas as pd
from pandas import series,dataframe
import matplotlib.pyplot as plt
import scipy.misc as misc
import scipy.ndimage as ndimage
# 讀取顯示
face = misc.face(gray=
true
)# gray=true 獲取的是黑白
plt.imshow(face,cmap=
"gray"
)plt.show(
)# 移動座標
shift_face = ndimage.shift(face,
[200,0
],mode=
'constant'
)plt.imshow(shift_face,cmap=
"gray"
)plt.show(
)# 旋轉
face_rotate = ndimage.rotate(face,angle=
180)
plt.imshow(face_rotate,cmap=
"gray"
)plt.show(
)# 縮放
face_zoom = ndimage.zoom(face,zoom=
0.5)
plt.imshow(face_zoom,cmap=
"gray"
)plt.show(
)# 切割
face_spilt = face[
:512,-
512:
]plt.imshow(face_spilt,cmap=
"gray"
)plt.show(
)
進行過濾
新增雜訊,對雜訊使用ndimage中的高斯濾波,中值濾波,signal中維納濾波進行處理,是變得清楚
《Python之機器學習(NumPy)》
單行注釋 多行注釋 多行注釋 多行注釋 a.ndim 輸出陣列的維數 a.shape 輸出陣列的形式 幾行,幾列 copy 複製陣列 a 2 陣列中每個元素乘以2 1,2 2 陣列將變成4個 a 2 a的平方 1,2 2 unsuported operand type 陣列訪問。修建異常值。處理不存...
機器學習預備 numpy
引入 import numpy as np numpy 資料結構 ndarray numpy 使用的陣列類是 ndarray 一些重要屬性如下 ndarray.ndim 維數 ndarray.shape 返回 n,m n行 m列 ndarray.dtype 型別 numpy 資料結構 mat mat...
機器學習入門 numpy學習
numpy的基本使用 ndarray支援並行化運算 向量化運算 numpy內建了並行運算功能,當系統有多個核心時,做某種計算時,numpy會自動做平行計算 效率遠高於純python numpy底層使用c語言編寫,內部解除了gil 全域性直譯器鎖 其對陣列的操作速度不受python直譯器的限制,所以,...