主要使用np.array()函数,语法如下
import numpy as np np.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)
主要参数:
Object:任何具有数组接口方法的对象
dtype:数据类型
ndmin:指定生成数组的最小维数
# 创建一个指定长度为二维数组,数据并没有初始化,值随机 n1 = np.empty([2,3],dtype=int) print(n1) # 指定二维数组的维度并对值进行填充,全部初始化为0 n1 = np.zeros([2,3],dtype=int) print(n1) # 创建一个指定长度为二维数组,并将数据全部初始化为1 n1 = np.ones([2,3],dtype=int) # 创建一个指定长度为二维数组,并将数据全部初始化为指定的值 n1 = np.full([2,3],5)
通过np.arange(stat,stop,step,dtype=None)创建数组
start:起始值,默认为0
stop:终止值,不包含
step:步长
np.arange(1,6,2) #[1,3,5]
通过np.linspace()生成等差数列
n = np.linspace(10,50,5,dtype=int) #[10 20 30 40 50]
通过np.logspace()生成等比数列
n = np.logspace(1,4,num=4,base=2,dtype=int) #[ 2 4 8 16]
生成随机数组,使用rand()函数,生成(0,1)之间的随机数组,传入一个值随机生成一维数组,传入一对值随机生成一个二维数组
numpy.random.rand(d0,d1,d2,d3) 参数d0,d1等为整数,表示每一维度的长度
randn()函数用于从正态分布中返回随机生成的数组,语法同rand函数
n = np.random.rand(5,4,3) [[0.37385151 0.2058156 0.52630237] [0.97588255 0.14450416 0.24276859] [0.20887649 0.52145804 0.33680438] [0.65021309 0.4109006 0.90690288]]
randint()函数的作用和arrange()函数类似,用于生成一定范围内的随机数组,左闭右开区间
n = np.random.randint(low=1,high=10,size=5) print(n) # [1 3 7 6 2]
normal()函数用于生成正态分布的随机数
n = np.random.normal(loc=0,scale=1,size=5) #loc 均值 scale 标准差 size 大小 print(n) #[-0.51231413 0.0950708 0.29954217 -1.37279317 -0.40188256]
为了区别python数据类型,bool,int,float等数据类型的末尾都加了_ ,比如
Bool_ Int_
numpy数组的加减乘除乘幂运算都是对应位置的元素进行加减乘除
数组之间的标量运算可以理解为向量和标量之间的运算
数组的切片式索引:
arrar[start:stop:step]
一个三行三列的二维数组,通过切片式索引操作
n = np.ones([3,3],dtype=int) print(n[:2,2:]) print(n[:3,1:]) #[[1] [1]] [[1 1] [1 1] [1 1]]
横向合并:将两个行数相同的数组在行方向上进行简答拼接
np.concatenate()方法将两个待合并的数组以列表的形式传递给concatenate,并通过设置axis参数指明在行方向还是列方向上进行合并
arr1 = np.full([2,3],5) print(arr1) arr2 = np.full([2,3],6) print(arr2) n1 = np.concatenate([arr1,arr2],axis=1) print(n1) [[5 5 5] [5 5 5]] [[6 6 6] [6 6 6]] [[5 5 5 6 6 6] [5 5 5 6 6 6]] # 同样实现横向合并 n1 = np.hstack([arr1,arr2]) print(n1) # 实现横向合并 n1 = np.column_stack([arr1,arr2])
纵向合并
import numpy as np #np.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0) arr1 = np.full([2,2],5) print(arr1) arr2 = np.full([2,2],6) print(arr2) n1 = np.concatenate([arr1,arr2],axis=0) print(n1) print(len(n1)) [[5 5] [5 5]] [[6 6] [6 6]] [[5 5] [5 5] [6 6] [6 6]] 4 # 下面的函数也可以实现纵向合并 np.vstack([arr1,arr2]) np.row_stack([arr1,arr2])
split函数沿着特定的轴将数组分割为子数组
numpy.split(arr,indices_or_sections,axis) 三个参数分别代表:被分割的数组, indices_or_sections:如果是一个整数,就用该数平均分,如果是一个数组,为沿轴切分的位置(左开右闭) axis:设置切割的方向,默认为0,横向切割,即水平方向 hsplit函数用于水平分割数组,通过指定要返回的相同形状的数组数量来分割 vsplit用于垂直分割轴
常见的统计分析函数,使用时去搜索