目录
-
介绍
- 科学计算工具包
- N维数组对象: ndarray
- 对数组结构进行计算,不用遍历循环,直接矩阵计算
- 随机数,线性代数,傅里叶变换
- 科学计算工具包
-
基础数据结构
- 创建
- ar = np.array([[1,2,3,4,5,6],[2,3,4,5,6,7],[3,4,5,7,7,8]])
- ar1 = np.array(range(10))
- !!ar2 = np.arange(range(10))
- ar4 =np.random.rand(10).reshape(2,5) 先得到值再得到形状
- linspace(10,20,num = 21,endpoint=True,retstep=true) #起始10结束20分21个数 endpoint默认true,包含最后一个数 retstep:输出结果+显示步长
- zeros(10) 创建10个数值为0的数组 zeros((3,5),dtype=np.int) 3行5列为0 的数组 dtype为设置元素类型 zeros_like(a) 创建一个跟a一样的数组 ones()全为1的数组
- eye(5) 创建N*N的正方单位矩阵
- 常用函数
- ndim 输出数组维度的个数(轴数)
- size元素的个数
- !shape 数组的维度,n行n列shape为(n,m)
- !dtype 数组里数值的类型 itemsize 每个数值的字节大小
- data 数组元素缓存区
- 变化形状
- T ,原(3,4)变(4,3)
- !!!reshape() 可直接 ones(10,10).reshape(5,20) #生成新数组
- resize 超出了重新从头填充 eg: np.resize(np.arange(20),(5,6))
- 复制数组 copy #新生成
- !!改变数组类型 ar.astype(np.int64)
- 数组堆叠
- stack((a,b),axis=0) axis为轴参数 0为竖向,1为横向链接
- np.hstack((a,b)) 横向连接
- vstack 竖向链接 #需列的数量一致
- 数组拆分
- 横向拆分 hsplit(ar,2) 结果为列表
- 纵向拆分 vsplit(ar,2)
- 简单运算
- mean() max() std() min() var() 方差
- 创建
-
索引和切片
- 一维 ar[4] 第五个 ar[:3] 从0到3 ar[::2]步长为2
- 二维
- r[2,2] =r[2][2] 索引为2的行和索引为2的列 第三行第三列
- r[2] 第三行
- r[1:3] 第二行到第三行(下标为1-2的行)
- r[:2,2:]
- 布尔型索引
- ar[i,:] i为[true,false,true],只保留为true的值,则只保留1,3行
- ar>5 输出每个元素是否大于五的true,false矩阵 ar[ar>5]大于5的值,一维
- 改写值,与列表方法相同
-
随机数
- np.random.normal(size=(4,4)) 标准正太分布样本值
- !!np.random.rand() 生产[0,1)之间的随机浮点数,乘100生成(0,100) ---均匀分布 /rand(4,4)---生成四行四列
- randn---正态分布的随机值
- np.random.randint(low,high,size=(2,5)) 生成(low,high)的随机整数,否则(0,low)之间 size---维度
-
数据输入输出
- 存储.npy文件
- import os os.chdir('路径') ar = np.random.rand(5,5) np,save('文件名,npy',ar)
- savetxt('name.txt',ar,delimiter=',') delimiter表示数据间分隔方式
- loadtxt('name.txt',delimiter=',') 读取省略,的结果,读取的是数字
- 存储.npy文件