python每日学习10:numpy库的用法(上)
-
下载numpy库
pip install numpy
-
检测环境是否安装
import numpy import numpy as np a=np.arange(10) print(a)
-
array创建数组
名称 描述 dtype 数组元素的数据类型,可选 copy 对象是否需要复制,可选 order 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) subok 默认返回一个与基类类型一致的数组 ndmin 指定生成数组的最小维度 object 数组或嵌套的数列 #numpy模块的array函数可以生成多维数组。 #numpy的格式:numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0) #创建一维 a=np.array([1,2,3,4,5,6,7,8]) print(a) print("a数组的维度:",a.shape) #创建二维 a1=np.array([[1,2,3],[4,5,6],[7,8,9]]) print(a1) print("a1数组的维度:",a1.shape) #ndmin参数的使用 a3=np.array([1,2,3,4,5,6],ndmin=3) print(a3) #dtype的使用 a4=np.array([1,2,3,4,5,6],dtype=np.float32) print(a4)
-
arange创建数组
名称 描述 start 起始值,默认为0 stop 终止值(不包含) step 步长,默认为1 atype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。 #arange的格式:numpy.arange(start,stop,step,dtype) #arange生成0到5的数组 b=np.arange(0,6,dtype=int) print(b) #arange设置了起始值、终止值及步长 b1=np.arange(10,20,2) print(b1) # arange创建二维数组 b2=np.array([np.arange(1,4),np.arange(4,7),np.arange(7,10)]) print(b2) print("b2数组的维度:",b2.shape)
-
随机数创建
名称 描述 seed 确定随机生成器种子 permutation 返回一个序列的随机排列或返回一个随机排列的范围 shuffle 对一个序列就地随机排列 rand 产生均匀分布的样本值 randint 该方法有三个参数low、high、size三个参数。默认high是None,如果只有low,那范围是[0,low)。如果有high,范围就是[low,high)。 random(size=None) 该方法返回[0.0, 1.0)范围的随机数。 randn(d0,d1,…,dn) randn函数返回一个或一组样本,具有标准正态分布(期望为0,方差为1)。dn表格每个维度,返回值为指定维度的array random模块包含了很多方法可以用来产生随机数 #随机数:返回[0.0, 1.0)范围的随机数。格式:numpy.random.random(size=None) c=np.random.random(size=4) c1=np.random.random(size=(3,4)) print(c) print(c1) # 随机整数:该方法有三个参数low、high、size三个参数。默认high是None,如果只有low,那范围就是[0,low)。如果有high,范围就是[low,high) #格式 :numpy.random.randint() c2=np.random.randint(5,size=8) print(c2) c3=np.random.randint(5,12,size=10) print(c3) c4=np.random.randint(5,10,size=(3,5)) print(c4)
-
正态分布
# 正态分布:randn函数返回一个或一组样本,具有标准正态分布(期望为0,方差为1)。dn表示每个维度返回值为指定维度的数组 #格式:numpy.random.randn(d0,d1,...,dn) d=np.random.randn() print(d) d1=np.random.randn(2,4) print(d1) d2=np.random.randn(4,2,3) print(d2) # 指定期望和方差的正太分布 #正太分布(高斯分布)loc:期望 scale:方差 size 形状 d3=np.random.normal(loc=3,scale=4,size=(2,3,2)) print(d3)
-
ndarray对象
名称 描述 .ndim 秩,即轴的维度或维度的数量 .shape ndarray对象的尺度,对于矩阵,n行m列 .size ndarray对象元素的个数,相当于shape的n*m的值 .dtype ndarray对象的元素类型 .itemsize ndarray对象中每个元素的大小,以字节为单位 #ndarray对象: N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。 e=np.random.randint(10,size=6) e1=np.random.randint(10,size=(3,4)) e2=np.random.randn(3,4,5) print('ndim属性'.center(20,'*')) print('ndim',e.ndim,e1.ndim,e2.ndim) print('shape',e.shape,e1.shape,e2.shape) print('dtype',e.dtype,e1.dtype,e2.dtype) print('size',e.size,e1.size,e2.size) print('itemsize',e.itemsize,e1.itemsize,e2.itemsize)
-
zeros创建
# zeros创建:创建指定大小的数组,数组元素以 0 来填充 # 格式:numpy.zeros(shape,dtype=float,order='c' f=np.zeros(5) print(f) f1=np.zeros((5,),dtype=int) print(f1) f2=np.zeros((2,2)) print(f2) # zeros_like:根据传入的数组形状创建全为0的数组 ff=np.array([[2,2,2],[3,4,5],[6,7,8]]) f3=np.zeros_like(ff) print(f3)
-
ones创建
# ones创建:创建指定形状的数组,数组元素以 1 来填充。 # 格式:numpy.ones(shape,dtype=None,order='c') g=np.ones(5) print(g) g1=np.ones((3,4),dtype=int) print(g1) g2=np.ones_like(g1) print(g2)
-
empty创建
#empty创建创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组,里面的元素的值是之前内存的值 # 格式:numpy.empty(shape,dtype=floar,order='c') h=np.empty([3,2],dtype=int) print(h) h1=np.empty_like(h) print(h1) h2=np.empty(10,dtype=int) print(h2) h3=np.arange(5) h4=np.add(2,h3,out=h2[:5]) print(h4,h2)
-
full()创建
# full()创建:创建全为某个指定值的数组 #格式:full(shape,fill_value) i=np.full((2,2,3),3) print(i)
-
创建单位矩阵
# 创建单位矩阵:单位矩阵从左上角到右下角的对角线上的元素均为1,除此以外全都为0。任何矩阵与单位矩阵相乘都等于本身,而且单位矩阵因此独特性在高等数学中也有广泛应用。 i1=np.eye(3,dtype=int) print(i1) i2=np.identity(3,dtype=int) print(i2)
-
linspace创建
名称 描述 start 序列的起始值 stop 序列的终止值,如果endpoint为true,该值包含于数列中 num 要生成的等步长的样本数量,默认为50 endpoint 该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。 retstep 如果为 True 时,生成的数组中会显示间距,反之不显示。 dtype ndarray 的数据类型 linspace 创建等差数列 #linspace创建:linspace函数用于创建一个一维数组,数组是一个等差数列构成的 #格式:np.linspace(start,stop,num=50,endpoint=True,resource=False,dtype=None) # start # stop # num # endpoint # retstep # dtype #linspace j=np.linspace(1,10,10) print(j) # linspace创建等差数列endpoint 设为 true j1=np.linspace(10,20,5,endpoint=True) print(j1) j2=np.linspace(1,5,num=5,endpoint=False) print(j2)
-
logspace 创建
logspace 创建
-
一维数组索引和切片
#:ndarray对象的内容可以通过索引或切片来访问和修改,与 Python中 list 的切片操作一样。ndarray 数组可以基于 0 - n 的下标进行索引,并设置 start, stop及 step 参数进行,从原数组中切割出一个新数组。 # 一维数组索引和切片的使用 l=np.array(10) # l[2] # l[2:7:2] # l[2:] # 一维数组负索引和切片的使用 # l[-2] # l[-2:] # 二维数组的索引和切片 # 索引直接获取 l1=np.arange(1,13) l2=l1.reshape((4,3)) print(l2) print(l2[1]) print(l2[2][1]) # 使用坐标获取数组[ print(l2[:,1]) print(l2[2,1]) print(l2[::2,0]) print(l2[(2,3),(1,0)])#同时获取第三行第二列,第四行第一列 # 二维数组负索引的使用 print(l2[-1])#获取最后一行 print(l2[::-1])#行进行倒序 print(l2[::-1,::-1])#行列都倒序 # 切片数组的复制 l3=np.arange(1,13).reshape((3,4)) l4=l3[:2,:2] l4[0][0]=11111 print(l4) l4=np.copy(l3[:2,:2]) l4[0][0]=2222 print(l4)
-
改变数组的维度
# 改变数组的维度:通过reshape方法可以将一维数组变成二维、三维或者多维数组,也可以通过reshape方法将多维数组变成一维。 m=np.arange(24)#创建一维的数组 m1=m.reshape(2,3,4)#使用reshape将一维数组变成三维数组 m2=m.reshape(3,8)#将a变成二维数组 m.reshape(-1)#将多维数组变成一维数组 # 通过ravel方法或flatten方法可以将多维数组变成一维数组。改变数组的维度还可以直接设置Numpy数组的shape属性(元组类型),通过resize方法也可以改变数组的维度。 m3=m1.ravel()#使用ravel函数将三维的m1变成一维的数组 m4=m2.flatten()#使用flatten函数将二维的m2变成一维的数组 m1.shape=(6,4)#使用shape属性将三维的m1变成二维数组(6行4列) m1.resize((2,12))#使用resize修改数组的维度