专业编程基础技术教程

网站首页 > 基础教程 正文

人工智能深度学习基础——Numpy模块知识汇总

ccvgpt 2024-10-12 13:30:10 基础教程 8 ℃

前提说明:1.希望读者可以自行把代码部分进行测试运行一下以便可以真正明白代码的意思,

2.numpy模块没有安装的要提前安装(pip install numpy)

人工智能深度学习基础——Numpy模块知识汇总

3.以下代码都以np代表numpy(import numpy as np)


1.array类型

*创建一维数组

np.array([1,2,3,4,5,6,7])

*创建二维数组

np.array([[1,2,3],[1,2,3],[1,2,3]])

2.查看数据类型

a = np.array([1,2,3,4,5,6,7])

a.dtype

3.转换数据类型

a = np.array([1,2,3,4,5,6,7])

a.astype(np.int64)

numpy的数据类型

4.array的属性

a = np.array([1,2,3,4,5,6,7])

a.flags //array的标志位

a.shape //返回的是元组,代表array几维,每一维几个元素,

a.strides //每个维度元素之间的字节数间隔

a.ndim //创建的数组维数

a.data //存储的数据块

a.size //总的元素个数

a.itemsize //数组中每个元素所占的字节数

a.nbytes //总的字节数

a.base //输出x引用的那个数据的内容,引用的什么,输出什么

5.array矩阵的生成

*np.zeros(shape=(n,m),dtype='')

//生成n?m维的0矩阵,默认生成的元素都是浮点型,若想指定类型,dtype='数据类型'

*np.ones(shape=(n,m),dtype='')

//生成n?m维的1矩阵,默认生成的元素都是浮点型,若想指定类型,dtype='数据类型'

*np.full(shape=(n,m),fill_value=,dtype='')

//生成n?m维的fill_value矩阵,默认生成的元素都是int32类型

*np.arange()

//arange和python中的range类似,三个参数代表的意思都一样,但arange返回的是 array类型数据(一维数组),range返回的是一个生成器,并且arange支持步长为浮点数

*np.linspace(n,m,k)

//生成从n到(m-1)之间k个元素的一维矩阵

*np.random.randint(n,m,size=(x,y))

//生成x?y的从n到m-1随机生成的整数的矩阵

*np.random.random(size=(x,y))

//生成x?y的从0到1的随机小数的矩阵

*np.random.normal(n,m,size=(x,y))

//生成x?y,以n为平均值,以m为方差的矩阵,方差越小,数据越精确


6.array矩阵的基本操作


*索引和切片(所有的切片操作都是左闭右开)

#一维数组

x = np.arange(10) //array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

x[0] //索引操作 0

x[0:9:2] //切片操作,第三个值是步长,即隔几个取一个 0 2 4 6 8


#二维数组

X =np. arange(15)

X1 = X.reshape(3,5) //reshape函数,调整维数

###

[[ 0, 1, 2, 3, 4],

[ 5, 6, 7, 8, 9],

[10, 11, 12, 13, 14]]

###

X1[0][1] //索引操作,[行][列]

X1[0,1] //索引操作,[行,列]

X1[0:3,0:3] //切片操作 前三行和前三列形成的子阵

###

[[ 0, 1, 2],

[ 5, 6, 7],

[10, 11, 12]]

###


*合并和分割

*合并操作

#一维数组

a = np.arange(14,20) //[14, 15, 16, 17, 18, 19]

b = np.arange(20,26) //[20, 21, 22, 23, 24, 25]

np.concatenate([a,b]) //[14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]

#二维数组

x = np.arange(0,10).reshape(2,-1) //reshape函数第二个值为-1,会自动生成与行对应的列数

###

[[0, 1, 2, 3, 4],

[5, 6, 7, 8, 9]]

###

y = np.arange(10,20).reshape(2,-1)

###

[[10, 11, 12, 13, 14],

[15, 16, 17, 18, 19]]

###

np.concatenate([x,y],axis=0) #axis=0按行合并 axis=1按列合并

###

[[ 0, 1, 2, 3, 4],

[ 5, 6, 7, 8, 9],

[10, 11, 12, 13, 14],

[15, 16, 17, 18, 19]]

###

*分割操作

#一维数组

x1,x2,x3,x4,....... = np.split(array,[n1,n2,n3,n4,.......])

//以array中的n1,n2,n3,n4,.......为分割点进行分割分成n1,n2,n3,n4,.......个数组存储在 x1,x2,x3,x4,.......中

#二维数组

x1,x2,x3,x4,....... = np.split(array,[n1,n2,n3,n4,.......], axis=1)

//二维数组的操作和一维数组一样,就是加个axis,axis=0按行分割,axis=1按列分割



7.array矩阵的运算操作

#所有的算术运算符和数学函数都是对矩阵中的每个元素进行操作

*np.linalg.inv(A) //对A求逆矩阵

*np.dot(A,D) //dot函数可以计算两个矩阵的乘积

*求转置矩阵 A.T


8.array矩阵的聚合运算

np.max()#最大值

np.min(x)#最小值

np.sum(x)#求和

np.median(x)#中位数

np.percentile(x,q=50)#求百分数,q=50 ==》 50%

np.var(x)#方差

np.std(x)#标准差

np.any(x==0)#x中的数据是否有一个等于0 返回bool类型

np.all(x==0)#x中的数据是否全部等于0 返回bool类型

x.mean()#平均值

#二维数组的所有操作都和上面一样,如果想按列求,axis=0,按行求axis=1

例:np.sum(X,axis=1)


9.arg索引运算

arg索引运算是拿到值对应的索引值

a = np.arange(10) //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

np.random.shuffle(a)

// shuffle(a) 将a矩阵乱序排放 [6, 7, 9, 4, 5, 1, 8, 3, 0, 2]

np.argmin(a) //8 索引为8对应的值是0(最小值),即arg索引运算是拿到值对应的索引值

###

所有的聚合运算都可以进行arg索引运算

###


np.partiton(a,kth=n)

###

从第n个位置划分 n前面的都是比较小的数据群体,n后面的都是比较大的数据群体,partition就是把较大的数据和较小的群体进行划分,不考虑排序问题

###



10.FancyIndex运算

//FancyIndex 就是把一个列表当作一个数组的索引值进行访问

#一维矩阵

x = np.arange(16)

np.random.shuffle(x)

//[11, 10, 12, 9, 13, 14, 15, 3, 6, 2, 8, 1, 4, 0, 7, 5]

x_index = [0,1,2,3]

x[x_index] //把数组x_index作为索引值进行访问数组x

//[11, 10, 12, 9]

#二维矩阵

X = x.reshape(4,4)

###

[[11, 10, 12, 9],

[13, 14, 15, 3],

[ 6, 2, 8, 1],

[ 4, 0, 7, 5]]

###

X_h = [0,1,2]

X_v = [0,1,2]

X[x_h,x_v] //X[x_h,x_v]相当于 X[0,0] X[1,1] X[2,2]

#还可以使用bool类型当作索引值

x>10

###

[ True, False, True, False, True, True, True, False, False,False, False, False, False, False, False, False]

###

x[x>10] //True可以访问到,False不可以访问到

// [11, 12, 13, 14, 15]

最近发表
标签列表