- 安裝复颈,
pip install numpy
- 導(dǎo)入
import numpy as np
- 創(chuàng)建數(shù)組
arr = np.array([1,2,3,4,5])
arr
out:array([1, 2, 3, 4, 5])
- 創(chuàng)建一個三維的空數(shù)組绩聘,里面的數(shù)據(jù)時內(nèi)存中殘留的內(nèi)容
np.empty((2,3,2))
array([[[1.59187215e-312, 0.00000000e+000],
[1.41537862e+161, 5.22182633e+180],
[7.33952596e+223, 4.27255707e+180]],
[[7.04850274e-120, 4.90900659e+252],
[3.88621453e+285, 2.91237123e+257],
[4.71294503e+257, 2.59818825e-306]]])
- 創(chuàng)建從0-20公差為2的一維數(shù)組
np.arange(0,20,2)
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
- 生成從0到2均分的五個數(shù)
np.linspace(0,2,5)
array([0. , 0.5, 1. , 1.5, 2. ])
- 創(chuàng)建3*3的在0-1之間均勻分布的隨機數(shù)組
np.random.random((3,3))
array([[0.29680299, 0.19137578, 0.26913372],
[0.23225081, 0.52695982, 0.82736975],
[0.13357885, 0.6480721 , 0.29805271]])
-
創(chuàng)建3*3的、均值為0耗啦,方差為1的正態(tài)分布隨機數(shù)
np.random.normal(0,1,(3,3))
array([[ 0.71021081, -0.68369742, -0.4169674 ],
[ 0.04374575, 0.42580965, -2.02402947],
[ 0.31068114, -0.79955925, -0.36962168]])
- 0-10隨機數(shù),3*3
np.random.randint(1,10,(3,3))
array([[8, 9, 8],
[6, 2, 9],
[5, 1, 2]])
- 單位矩陣
np.eye(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
- 數(shù)據(jù)類型轉(zhuǎn)換 變量.astype(np.數(shù)據(jù)類型)凿菩,會返回一個原始數(shù)組的拷貝
arr = np.array([1,2,3,4,5])
arr.dtype
out:dtype('int32')
float_arr = arr.astype(np.float64)
float_arr
out:array([1., 2., 3., 4., 5.])
- 小數(shù)轉(zhuǎn)換為整數(shù)會直接截掉小數(shù)部分
arr = np.array([1.2,4.5,6.8])
arr
out:array([1.2, 4.5, 6.8])
arr.astype(np.int32)
out:array([1, 4, 6])
- 字符串不能直接轉(zhuǎn)換為整數(shù)
arr=np.array(['1.2'])
#先轉(zhuǎn)換為float型再轉(zhuǎn)換為整數(shù)
arr.astype(np.float).astype(np.int32)
out:array([1])
- 創(chuàng)建一個包含10個隨機數(shù)的3*4的矩陣
x=np.random.randint(10,size=(3,4))
x
out:array([[5, 0, 3, 3],
[7, 9, 3, 5],
[2, 4, 7, 6]])
- 數(shù)組的選取:選取后是原數(shù)組的視圖而不是拷貝帜讲,省內(nèi)存
數(shù)組的索引
#一維數(shù)組
x=np.array([1,2,3,4,5,6])
x
out:array([1, 2, 3, 4, 5, 6])
x[0]---->1
x[-1]---->6
#二維數(shù)組一樣
x=np.random.randint(10,size=(3,4))
x
out:
array([[8, 8, 1, 6],
[7, 7, 8, 1],
[5, 9, 8, 9]])
#x[行衅谷,列]
#第二行倒數(shù)第一列
x[2][-1]
out:9
- 數(shù)組的切片
# x[start:stop:step] x[從哪開始,到哪結(jié)束似将,步長值]
#一維數(shù)組
x=np.arange(0,20,2)
x
out:array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
#從第一個元素開始获黔,到最后一個元素結(jié)束但不包括最后一個元素,左閉右開
x[0:-1:2]
out:array([ 0, 4, 8, 12, 16])
x[:] #獲取所有值
out:array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
#二維數(shù)組x[行:start:stop:step在验,列:start:stop:step]
x=np.random.randint(10,size=(3,4))
x
out:
array([[4, 3, 3, 2],
[0, 4, 8, 9],
[9, 5, 8, 8]])
# 選取數(shù)組的前兩行和前三列
x[:2,:3]
out:
array([[4, 3, 3],
[0, 4, 8]])
#選取第一行
x[0,:]
out:array([4, 3, 3, 2])
#第一列
x[:,0]
OUT:
array([4, 0, 9])
# 旋轉(zhuǎn)一百八十多度
x[::-1,::-1]
OUT:
array([[8, 8, 5, 9],
[9, 8, 4, 0],
[2, 3, 3, 4]])
# 調(diào)用copy()方法創(chuàng)建副本
x_cp=x.copy()
x_cp
out:
array([[4, 3, 3, 2],
[0, 4, 8, 9],
[9, 5, 8, 8]])
- 變換數(shù)組 : reshape()方法
arr = np.arange(1,10)
arr
out:array([1, 2, 3, 4, 5, 6, 7, 8, 9])
arr.reshape((3,3))
out:array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 數(shù)組拼接
m=np.array([1,2,3])
n=np.array([3,2,1])
np.concatenate([m,n])
out:
array([1, 2, 3, 3, 2, 1])
#按軸axis拼接玷氏,默認axis=0,得到下面的結(jié)果,屬于垂直拼接
grid = np.arange(1,7).reshape(2,3)
grid
out:
array([[1, 2, 3],
[4, 5, 6]])
np.concatenate([grid,grid])
out:
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3],
[4, 5, 6]])
#axis=1時水平拼接
np.concatenate([grid,grid],axis=1)
out:
array([[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]])
# 垂直棧拼接 vstack()
np.vstack([grid,grid])
out:
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3],
[4, 5, 6]])
# 水平棧拼接 : hstack()
np.hstack([grid,grid])
out:
array([[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]])
- 數(shù)組的分割
x=np.random.randint(12,size=(12,))
x
out:array([11, 2, 9, 11, 7, 2, 7, 5, 8, 0, 10, 5])
y1,y2,y3=np.split(x,[4,8])
print(y1,y2,y3)
OUT:
[11 2 9 11] [7 2 7 5] [ 8 0 10 5]
# 垂直棧和水平棧分割
x=np.random.randint(16,size=(4,4))
x
out:
array([[ 7, 10, 10, 5],
[ 9, 1, 2, 4],
[15, 14, 13, 12],
[11, 0, 12, 0]])
a_up,a_dn=np.vsplit(x,[2])
a_up
out:
array([[ 7, 10, 10, 5],
[ 9, 1, 2, 4]])
a_dn
out:
array([[15, 14, 13, 12],
[11, 0, 12, 0]])
水平棧分割
a_l,a_r=np.hsplit(x,[2])
a_l
out:
array([[ 7, 10],
[ 9, 1],
[15, 14],
[11, 0]])
a_r
out:array([[10, 5],
[ 2, 4],
[13, 12],
[12, 0]])