一些numpy库中常用基础总结,欢迎指正
# 一、numpy库 # 创建数组对象 # 1、利用array函数创建数组对象 import numpy as np # 1.1 #列表类型 data1=[1,2,3,4] #列表 data1=np.array(data1) print(data1) # 1.2 #元组类型 data2=(1,2,3,4) #元组 data2=np.array(data2) print(data2) # 1.3 #多维数组 data3=[[1,2,3,4],[1,2,3,4]] #多维数组 data3=np.array(data3) print(data3) # ndim:数组的维度 print(data3.ndim) # 2、使用专门创建数组的函数 #2.1、常用arrange函数——类似于python原生range函数 demo_np=np.arange(10) print(demo_np) # 2.2、arange创建等差一维数组——不包括终止值默认前闭后开 # linspace创建等差一维数组——包括终止值前闭后闭,第三个参数为创建等差的值的个数 # 格式:np.arange(start, stop, step, dtype) # arange创建等差一维数组 demo_np=np.arange(0,1,0.2) print(demo_np) # linspace创建等差一维数组 demo_np=np.linspace(0,1,5) print(demo_np) # logspace创建等比一维数组 demo_np=np.logspace(0,1,5) print(demo_np) # 2.3、zeros函数:创建指定长度或形状的全0数组 # 格式:np.zeros(shape, dtype=float, order='C') # 一维 demo_np=np.zeros(4) print(demo_np) # 多维 demo_np=np.zeros([4,4]) print(demo_np) # 2.4、ones函数:创建指定长度或形状的全1数组 # 格式:np. ones(shape, dtype=None, order='C') # 一维 demo_np=np.ones(4) print(demo_np) # 多维 demo_np=np.ones([4,4]) print(demo_np) # 2.5、diag函数创建对角矩阵 demo_np=np.diag([1,2,3,4]) print(demo_np) # 2.6、shape函数查看数组的形状 demo_np=np.shape(demo_np) # demo_np=demo_np.shape print(demo_np) # 2.7 size函数查看元素个数 demo_np=np.diag([1,2,3,4]) demo_np=np.size(demo_np) print(demo_np) # 2.8 dtype函数查看数据类型 demo_np=np.diag([1,2,3,4]) print(demo_np.dtype) # 2.9 astype函数(np.数据类型)——数据类型转换 demo_np=demo_np.astype(np.float64) print(demo_np.dtype) # 2.10 random模块生成随机数 # randint函数生成随机整数 -最小最大值和维度三个参数 demo_random=np.random.randint(5,10,size=(2,4)) print(demo_random) # 3、数组重塑 # 对于定义好的数组,可以通过reshape方法改变其数据维度。 # 格式:a.reshape(newshape) # 3.1、reshape方法重塑数组 demo_reshape=np.arange(10) print(demo_reshape) demo_reshape=demo_reshape.reshape(2,5) print(demo_reshape) # 3.2、数组合并 # hstack函数:实现横向合并——行必须一致 # vstack函数:实现纵向组合是利用vstack将数组纵向合并——列必须一致 # concatenate函数:可以实现数组的横向或纵向合并,参数axis=1时进行横向合并,axis=0时进行纵向合并。 a1=np.arange(10).reshape(2,5) a2=a1*2 print(a2,'n',a2) demo_concatenate=np.concatenate((a1,a2),axis=1) print(demo_concatenate) demo_concatenate=np.concatenate((a1,a2),axis=0) print(demo_concatenate) # hstack和vstack函数实现方法相同np. # 3.3、数组分割 # 与数组合并相反,hsplit函数、vsplit函数和split函数分别实现数组的横向、纵向和指定方向的分割。 # split函数:可以实现数组的横向或纵向分割,参数axis=1时进行横向合并,axis=0时进行纵向合并。 s1=np.arange(16).reshape(4,4) print(s1) # hsplit函数:实现横向分割; demo_hsplit=np.hsplit(s1,2) print(demo_hsplit) # vsplit函数:实现纵向分割; demo_vsplit=np.vsplit(s1,2) print(demo_vsplit) # print(type(demo_vsplit)) # 4、数组的索引和切片 # 4.1 一维数组的索引 demo_index=np.arange(10) print(demo_index) index_2=demo_index[0] print(index_2) # 切片 print(demo_index[1:5])#---用冒号 # 单独切片返回的是视图 demo_index[1:5] print(demo_index) # 4.2 多维数组的索引 demo_index=np.arange(10).reshape(2,5) # 某一范围的索引 前开后闭 index1=demo_index[0,1:3] print(index1) index2=demo_index[:,1:2] print(index2) # print(type(index2)) # 对于某一具体位置或某一范围的索引 index3=demo_index[1,(0,2)] print(index3) # 总结: # 1.如果数组是一维的,那么索引和切片就和python的列表是一样的。 # 2.如果是二维的,那么再中括号中给两个值,两个值是通过逗号分割,逗号前表示是行,逗号后表示是列。如果中括号只有一个值,那么就代表的是行。 # 3.如果是二维数组,那么行和列的部分都遵循一维数组的方式,可以使用整形,切片,还可以使用中括号等形式来索引没有规律的元素。 # 4.布尔索引是通过相同数组上的True还是False来提取的。提取的条件可以有多个,那么如果有多个,可以使用&和|,每个条件要用圆括号括起来。 # 5、数组的运算 # 5.1. 常用的ufunc函数运算 x=np.array([1,2,3]) y=np.array([1,2,3]) sum=x+y print(sum) reduce=x-y print(reduce) moti=x*y print(moti) divide=x/y print(divide) # 5.2 ufunc函数的广播机制 # 如果两个数组的后缘维度(即从末尾开始算起的维度)的轴长度相符或者其中一方的长度为1,则认为他们是广播兼容的。 # 广播会在缺失维度和长度为1的维度上进行。 func=np.array([[1,2,3,4],[1,2,3,4],[1,2,3,4]]) add=[1,1,1,1] print(func) demo_func=func+add print(demo_func) # 5.3 排序 # Sort函数对原数组直接进行排序。--注意:直接排序,调用改变原始数组 # 格式:numpy.sort(a, axis, kind, order) # 带轴向参数的sort排序 r1=np.array([[1,5,3,8],[2,4,1,0]]) r1.sort(axis=1) #沿横向排序 print(r1) r1.sort(axis=0) #纵向向排序 print(r1) # 6、重复数据与去重 # 在NumPy中,对于一维数组或者列表,unique函数去除其中重复的元素, # 并按元素由小到大返回一个新的元组或者列表。 # 数组内数据去重。 # unique函数调用后原数组不会改变 d1=np.array([1,2,3,4,2,3,1,1,1]) np.unique(d1) print("直接调用unique方法返回原数组:",d1) print("去重后数组:",np.unique(d1)) # 7、常用统计函数 arr=np.arange(10).reshape(2,5) np.sum(arr) #数组求和 np.sum(arr,axis=0) #数组纵轴求和 np.sum(arr,axis=1) #数组横轴求和 np.mean(arr) #数组均值 np.mean(axis=0) #数组纵轴均值 np.std(arr) #数组标准差 np.std(arr,axis=0) #数组纵轴标准差
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)