Numpy的ufunc
- Numpy的ufunc函数的介绍
- ufunc是universal function(通用函数)的缩写,是一种对ndarray中的数据执行元素级的运算。既可以对单个数值操作,也可以对数组的每个元素进行操作的函数(支持广播运算)。
- NumPy内置的许多ufunc函数都是在C语言实现的,因此它们的计算速度非常快,我们可以将其看做是简单的函数(接收一个或多个参数,返回一个或者多个返回值)。
- 常用的元素计算函数
- 一元ufunc
- np.ceil (x): 求每个元素向上最接近的数
- 参数
- x: number 或 ndarra
- np.floor(x): 求每个元素向下最接近的数
- 参数
- x: number 或 array
- np.rint(x): 将数组的每个元素四舍五入
- 参数
- x:number 或 array
- np.negative(x): 将数组的每个元素取反
- 参数
- x: number 或 array
- np.abs(x):取数组每个元素的绝对值
- 参数
- x: number 或 array
- np.square(x):求数组每个元素的平方
- 参数
- x: number 或 array
- np.aqrt(x):求数组元素的平方根
- 参数
- x: number 或 array
- 注意:
- 当被开平方的元素为负数的时候,返回的数值类型为sp.nan
- np.sign(x):计算各元素的正负号, 返回1(正数)、0(零)、-1(负数)
- 参数
- x: number 或 array
- np.modf(x):将数组的小数和整数部分以两个独立数组的形式,并返回一个包含所有数组的元祖
- 参数
- x: number 或 array
- np.isnan(x): 判断元素是否为 NaN(Not a Number),返回bool
- 参数
- x: number 或 array
- 示例
- 二元ufunc
- np.add(x, y): 元素相加,x + y
- 参数
- x, y: number 或 array(一维、或者相同维度多维)
- np.subtract(x, y): 元素相减,x - y
- 参数
- x, y: number 或 array(一维、或者相同维度多维)
- np.multiply(x, y): 元素相乘,x * y
- 参数
- x, y: number 或array(一维、或者相同维度多维)
- np.divide(x, y): 元素相除,x / y,分母不能包含零
- 参数
- x, y: number 或 array(一维、或者相同维度多维)
- np.floor_divide(x, y): 元素相除取整数商(丢弃余数),x // y
- 参数
- x, y: number 或 array(一维、或者相同维度多维)
- np.mod(x, y): 元素求余数,x % y,分母不能包含零
- 参数
- x, y: number 或 array(一维、或者相同维度多维)
- np.power(x, y): 元素求次方,x ** y
- 参数
- x, y: number 或array(一维、或者相同维度多维)
- 三元ufunc
- np.where(condition, x, y): 通过condition条件判断,条件满足返回x,否则返回y,最终返回一维数组
- 参数
- condition: 条件语句
- x , y : number 或 与condition的bool数组维度个数和大小相等的数组
- 示例
- 常用的元素统计计算函数
- 备注
- 多维数组默认统计全部的数据,添加axis参数可以按指定轴心统计
- 值为0则按列统计,值为1则按行统计,默认统计所有的数据
- np.mean(x [, axis]):所有元素的平均值,返回的每个元素为浮点数
- 参数
- x: array
- np.sum(x [, axis]):所有元素的和
- 参数
- x: array
- np.max(x [, axis]):所有元素的最大值
- 参数:
- x: array
- np.min(x [, axis]):所有元素的最小值
- 参数
- x: array
- np.std(x [, axis]):所有元素的标准差,返回的每个元素为浮点数
- 参数
- x: array
- np.var(x [, axis]):所有元素的方差,返回的每个元素为浮点数
- 参数
- x: array
- np.argmax(x [, axis]):最大值的下标索引值(会把多维数组当成一维数组来计算)
- 参数
- x: array
- np.argmin(x [, axis]):最小值的下标索引值(会把多维数组当成一维数组来计算)
- 参数
- x: array
- np.cumsum(x [, axis]):返回一个一维数组,每个元素都是之前所有元素的累加和
- 参数
- x: array
- np.cumprod(x [, axis]):返回一个一维数组,每个元素都是之前所有元素的 累乘积
- 参数
- x: array
- 条件判断函数
- np.any(conditions , [ axis]) 有一个元素满足指定条件,返回True,否则返回false
- 参数
- condition: 条件语句
- axis:
- 多维数组默认统计全部的数据,添加axis参数可以按指定轴心统计
- 值为0则按列统计,值为1则按行统计,默认统计所有的数据
- np.all(conditions , [ axis]) 所有的元素满足指定条件,返回True,否则返回false
- 参数
- condition: 条件语句
- axis:
- 多维数组默认统计全部的数据,添加axis参数可以按指定轴心统计
- 值为0则按列统计,值为1则按行统计,默认统计所有的数据
- 示例
- 增加、删除元素的函数(ndarray支持常用的增加和删除操作,以及数组的合并)
- np.append(arr1, arr2):在arr1后面追加arr2的数据,并返回一维数组
- 参数
- arr1:number 或array,都当做一维数组处理,两数组维度可以不一致
- arr2: number或array,都当做一维数组处理,两数组维度可以不一致
- np.insert(arr1, index, arr2, [ axis]):在arr1的 index 位置增加 arr2 数据
- 参数
- arr1: number或array
- index:执行插入数据的位置下标
- arr2:number或列表或array, 插入array的时候只能是一维数组,需要注意和arr1的维度大小一致
- 示例
- np.delete(arr1, index, [ axis]):按axis的方向,删除arr1的指定下标位置元素
- 参数
- arr1: number或array
- index:number或列表,代表删除元素的下标集合
- axis:axis = 1,删除每一行的index下标列数据;axis =0,删除index对应多行数据
- np.concatenate((arr1,arr2,...), [axis=0]):合并多个数组,数组的维度不改变
- 参数
- arrx:number 或array, 多个数组的维度个数保持一致
- axis:axis = 1,按照行合并;axis =0,按照列合并,默认为列合并
- 示例
- 集合操作函数(ndarray的集合运算)
- np.unique(x) : 对x里的数据去重,并返回有序的一维数组.
- 参数:
- x:array多维数组
- np.intersect1d(x, y) :计算x和y中的公共元素、去重,并返回有序一维数组, x & y
- 参数:
- x, y: array多维数组
- np.union1d(x, y) :计算x和y的并集、去重,并返回有序一维数组. x | y
- 参数
- x, y: array多维数组
- np.setdiff1d(x, y): 集合的差,即元素在x中且不在y中,并去重,返回有序一维数组. x - y, y - x
- 参数
- x, y: array多维数组
- np.setxor1d(x, y): 对称差集,两个数组中互相不包含的元素,并去重,返回有序一维数组。x ^ y
- 参数
- x, y: number或array多维数组
- np.in1d(x, y) : 得到一个表示“x中的的每个元素是否包含于y”的布尔型数组[ bool ].
- 参数
- x: number或array多维数据
- y: array多维数组
- 排序函数(ndarray的数组排序函数)
- ndarray.sort([axis]) 在原数组上进行递增排序,改变原数组的元素顺序,不改变维度
- 参数
- axis:axis = 1,按照行排序;axis =0,按照列排序,默认对全部的数据进行排序
- np.sort(ndarray, [axis]) 返回递增排序排序后的新数组,改变元素顺序,不改变维度
- 参数
- axis:axis = 1,按照行排序;axis =0,按照列排序,默认对全部的数据进行排序
- ndarray:多维数组对象
- adarray.argsort() 对数组进行从小到达排序,并返回排序后的每个元素之前对应的索引
Numpy的文件读写
- 不指定文件数据格式的保存和读取
- np.save('file_name', arr) 保存数据到磁盘文件中,默认格式为.npy
- 参数
- file_path: 保存文件的文件名,不需要添加 文件后缀,默认格式为.npy
- arr:将要被保存的数组
- arr = np.load('file_name.npy') 读取文件内容,默认格式为.npy,返回一个包含文件中数据的Numpy数组对象
- 参数
- file_name: 读取的文件名,需要添加文件的格式
- 指定文件数据格式的保存和读取(通常可以指定文件格式为csv等)
- savetxt('file_name', arr, delimiter=',', fmt='%d') 将数据保存到磁盘文件里。
- 参数:
- filename: 保存文件的文件名,需要指定文件的后缀,例如.csv
- arr: 将要被保存的数组
- delimiter: 指定分隔符的类型,通常使用','
- fmt:指定保存文件的数据类型,%d为数字
- arr = np.genfromtxt('file_name', delimiter=',', dtype=np.unicode, usecols=[x, y, z]) 将数据加载到普通的Numpy数组中
- 参数:
- filename: 读取文件的文件名,需要指定文件的后缀,例如.csv
- delimiter: 指定分隔符的类型,通常使用','
- dtype: 指定数据的读取产生数组的数据类型
- usecols:指定读取文件中数据的哪几列
- np.loadtxt() 将数据加载到普通的Numpy数组中,一般不常用