numpy基础知识
分类: 人工智能、学习笔记、编程语言 1741 2
概念
科学计算基础库,多作为数值计算、在大型、多维数组上执行数值运算。
- 创建数组
import numpy as np a = np.array([1,2,3,4,5]) b = np.array(range(1,6)) c = np.arange(1,6) # 其中 a = b = c np.arange的用法:arange([start], stop[, step,], dtype=None)
- c.dtype获取c中数据的类型
- c.astype(‘int8’)修改数据类型
- np.round(c, 2), 将元素为小数类型的数组,保留2位小数
- 数组的形状
t = np.array([[1,2,3], [4,5,6]]) t.shape # 获取t的形状,即维数
- reshape((2,3)) 修改形状,修改后是新值,而原数组不变
- flatten() 展开数组
- shape的值:一个值(a, ) ----- 一维 ----- a表示数组中元素的个数两个值(a, b ) ----- 二维 ---- a表示数组中元素的行数,b表示数组中元素的列数三个值(a, b,c ) ----- 三维 ---- a表示数组中元素的块,b表示数组中每一块元素的行数,c表示数组中每一块元素的列数
- 计算
- 数组 和 常数:数组中每一个元素和常数进行运算。其中:(0/0=nan ; 非零常数/0 = inf)
- 数组(a) 和 数组(b)
- 二维:(1)维数相同: 两个数组对应位置上的元素进行运算(2)行数相同(a(3,1),b(3,5)): b的每一列和a进行运算(3)列数相同(a(1,2),b(4,2)): b的每一行和a进行运算(4)行数和列数不等:报错
- 多维(广播原则)如果两个数组的后缘维度(从末尾开始算起的维度)的轴长度相符或其中方的长度为1,则他们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。eg: (3,3,3)和(3,2) --> 不兼容 (3,3,2)和(3,2) --> 兼容
- 轴
- 一维:0轴
- 二维:横为0轴,纵为1轴
- 三维:块为0轴,每一块的横为1轴,每一块的纵为2轴
- 读取本地数据
np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)
frame: 文件路径dtype:读取为指定的数据类型delimiter:分割字符串skiprows:跳过的行(如:标题行)
usecols:读取的数据的列
unpack:若为true,矩阵转置
numpy 转置:
(1)
transpose()
方法(2)
T
属性(3)
swapaxes(1,0)
方法,0和1分别为轴
索引和切片
- 取行
- 单行:
t[行数]
- 连续多行:
t[行数:]
,从指定行数开始连续取数组的行 - 不连续:
t[[1,5,8]]
, 取第1、5、8行
- 单行:
- 取列
- 单列:
t[行,列]
,取指定的行和列,其中:
表示都要,如t[1,:]
表示第二行的所有列例:import numpy as np t = np.arange(6).reshape((3,2)) print(t[1,:]) # 取第二行的所有列,结果:[2 3] print(t[2:,:]) # 取第三行之后所有行对应的所有列,结果:[[4 5]] print(t[[0,2],:]) # 取第一行和第三行的所有列,结果:[[0 1] [4 5]] print(t[1:3,0:2]) # 取第二行到第三行对应的第1列到第2列,结果:[[2 3] [4 5]] # 注:其中1:3中3为切片,即含头不含尾,真实值为1到2,所以3对应的是索引为2,而索引为2对应的值为第三行的值。
- 单列:
- 取不相邻的点
t[[0,2],[0,1]]
, 取下标为(0,0)和(2,1)对应的值
修改
- 条件修改
t[t<10]=3
将t中小于10的值 - where方法np.where(条件,符合条件的元素要赋的值,不符合条件的元素要赋的值)ge:
np.where(t>10, 0, 20)
将t中小于10 的元素替换为10,大于等于10的赋值为20 - clip方法t.clip(value1,value2) 把小于value1的元素替换为value1, 大于value2的元素替换为value
常用函数
- 计算函数
- 求和
- 整个数组的和:
np.sum(数组)
- 各个列对应的和:
np.sum(数组,axis=0)
- 各个行对应的和:
np.sum(数组,axis=1)
- 整个数组的和:
- 均值
t.mean(a,axis=None)
- 中值
np.median(t,axis=None)
- 最大值
t.max(axis=None)
- 最小值
t.min(axis=None)
- 极值
np.ptp(t,axis=None)
- 标准差
t.std(axis=None)
- 操作函数
- 拼接
np.vstack((t1, t2))
竖直拼接np.hstack((t1, t2))
水平拼接
- 分割:竖直分割(水平划线)
水平分割(竖直划线)
- 拼接
- 交换
t[[1,2], :] = t[[2,1], :]
行交换t[:, [1,2]] = t[:, [2,1]]
列交换 - 常用函数
创建全为0的数组:
np.zeros((2,2))
创建全为1的数组:
np.ones((2,2))
创建三角方阵:
np.eye(2)
获取每列最大值的坐标:
np.argmax(数组,axis=0)
获取每行最小值的坐标:
np.argmin(数组,axis=1)
创建随机分布数组
np.random.random(2,3)
创建两行三列的随机分布创建标准正态分布数组
np.random.randn(2,3)
创建两行三列的标准正态分布创建指定区间的随机整数数组
np.random.randint(start,end,(row, col))
共 2 条评论关于 “numpy基础知识”