import numpy as np
为提高运算效率,ndarray数组值的类型默认相同,创建时自动指定默认数据类型(内存占用最大的值类型)
默认浮点类型(float)
numpy方法 | 解释 |
---|---|
np.dtype | 指定当前numpy对象的整体数据, |
np.itemsize | 对象中每个元素的大小, 单位字节 |
np.itemsize | 对象中每个元素的大小, 单位字节 |
np.size | 对象元素的个数, 相当于np.shape中的n*m值 |
np.shape | 轴, 查看数组形状, 对于矩阵, n行m列 |
np.ndim | 秩 |
np.isnan(list) | 筛选出nan值 |
np.iscomplex(list) | 筛选出非复数 |
~ | 取补运算符 |
np.array | (数组, dtype=np.bool) 自定义数组类型 |
np.astype(np.bool) | 转换数组类型 |
np.mat() | 将python 列表转化成矩阵 |
np.mat().getA() | 将matrix对象转成ndarray对象 |
np.matrix() | 同上 |
np.asmatrix() | 将ndarray对象转成matrix对象 |
np.tile() | 重复某个数组。比如tile(A,n),功能是将数组A重复n次,构成一个新的数组传送门 |
np.T | 矩阵转置, 行变列, 列变行, 对角线翻转矩阵,相当于np.transpose() |
np.tolist() | 转换成python列表, 用于和python原生结合写程序 |
np.multiply(x, y) | 矩阵x 矩阵y相乘 |
np.unique() | 数组驱虫, 并且从小到大生成一个新的数组 |
np.arange | 同python range(),生成的对象为ndarray类型的 |
np.arange(24).reshape((2, 3, 4)) | 创建一个2维3行4列的数组, 必须能被给定的长度除开, 可以索引和切片 |
np.arange(24).resize((2, 3, 4)) | 同上, 会修改原值 |
np.linspace(x, y, z) | 等间距生成, x起始数值, y终止数值, z为产生的数据点数;也就是在区间x,y中产生z个点 |
np.ones(shape, dtype=None, order=‘C’) | 生成数值为1且shape形状的的数组, shape可以是元组,表示创建几行几列数据;也可是单个数字,表示创建大小为n的一维数组 |
np.zeros(shape, dtype=None, order=‘C’) | 生成数值为0且shape形状的的数组, shape可以是元组,表示创建几行几列数据;也可以是单个数字,表示创建大小为n的一维数组 |
np.full([x, y], z) | 自定义模板数组, 生成x行y列都是z的数组 |
np.eye(N, M=None, k=0, dtype=float, order=‘C’) | 生成大小为N的对角方阵,对角线的值都是1,其余都是0;M可以调整输出列数 |
np.flatten() | 数组降维, 不改变 原值 |
np.random.rand(x, y, z) | 生成一个一维x随机数或生成x*y的随机数组 |
np.random.randn(x, y) | 正态分布随机数 |
np.random.randint(low, high, (shape)) | 整数随机数 |
np.random.normal(loc, scale, (size)) | 从指定正态分布中抽取样本, loc为概率分布的均匀值, 标准差scale |
np.random.seed(s) | 给一个随机数字固定 |
np.randomunifrom(low, high, (size)) | 均匀分布的数组, 有小数 |
np.random.shuffle(a) | 将数组a的第0轴(最外维度)进行随机排列(洗牌), 改变数组a, 行边列不变 |
np.random.permutation(a) | 同上, 不改变数组a |
np.random.choice(a, size=None, replace=False, p=数组a/np.sum(b)) | 从一维数组a中以概率p抽取元素,形成size形状新数组,replace表示是否可以重用元素,默认为False,p为抽取概率,本位置越高,抽取概率越高 |
np.sum(axis=None) | 求和, axis=0为列, 1为行 |
np.argsort() | 矩阵每个元素坐标排序 |
np.sort(a, kind=‘quicksort’,axis=None) | 从小打大排序,默认quicksort;axis=None是将多维放在一维中排序;axis=-1多维数组按行排序;axis=0按列排序; |
-np.sort(-a, axis=None) | 从大到小排序 |
np.sort_values(‘字段’, ascending=False) | 排序,升序排列 |
np.mean(axis=None) | 求平均数,axis=0同列取平均值,axis=1同行取平均值 |
np.average(axis=None,weights=None) | 加权平均,weights加权值,不设为等权重,例子[10, 5, 1],每列分别X10,X5,X1在/(10+5+1) |
np.var(axis=None) | 方差:各数与平均数之差的平方的平均数 |
np.std(axis=None) | 标准差:方差平方根 |
np.min(axis=None) | 最小值 |
np.argmin(axis=None) | 求数组中最小值的坐标 |
np.median(axis=None) | 中位数 |
np.ptp(axis=None) | 元素最大值与最小值的差 |
np.cumsum() | 累加,cumsum和cumprod之类的方法不聚合,产生一个中间结果组成的数组,默认一维数组,1为按原样 |
np.cumprod() | 累乘 |
np.count_nonzero(arr > 0) | 计数非0值个数,布尔值会被强制转换为1和0,可以使用sum()对布尔型数组中的True值计数 |
np.bools.any() | 测试数组中是否存在一个或多个True |
np.bools.all() | 数组中所有值是否都是True, 测试有没有空值 |
np.insert(arr, obj, values, axis=None) | 插入数值,np.insert(a, [1], [[1],[2],[3]], axis=1)在第一列插入一个列表;axis=None插入到一维数组中;axis=1插入到列;axis=0插入到行 |
np.dot(a, b, out=None) | 求乘积运算,a,b可以为同数字,同数组,同np.array对象,一般使用X_.T.dot(X_) |
np.linalg.inv(a) | 求矩阵的逆,ainv = inv(np.matrix(a)),因为矩阵不能直接相除,所以有时需要转化为矩阵的逆来做乘法运算,矩阵的逆就是用来解决矩阵除法问题的 |
np.select(condlist, choicelist, default=0) | condlist定义筛选规则,choicelist做筛选时需要做的操作 |
np.column_stack((a,b)) | 将a作为b的一列合并到b,a为一维列表,b为1到多维列表,必须满足a的列表大小等于b的行数, |
np.concatenate((a, b), axis=0) | 合并数组,axis=0按行合并,axis=1按列合并;np.concatenate((a, b.T), axis=1) |
np.asarray(a, dtype) | 将a数据转化为固定的类型;array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会 |
np.where(condition, x=None, y=None) | 满足条件(condition),输出x,不满足输出y |
np.ravel(order=‘C’) | 将多维数组降维成一维数组,返回原始多维数组的引用,注意如果改变降维后一维数组的值,则原始数组的值也会改变;order为降维时采用的策略,可选值{‘C’, ‘F’, ‘A’, ‘K’},默认行序优先 |
np.flatten(order=‘C’) | 将多维数组降维成一维数组,返回原始多维数组的拷贝,改变降维后的一维数组的值,则原始数组的值不会改变;order为降维时采用的策略,可选值{‘C’, ‘F’, ‘A’, ‘K’},默认行序优先 |
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) | 返回从起始值到终止值总数量为num的列表,endpoint为True表示包含终止值 |
np.meshgrid(*xi, **kwargs) | meshgrid的作用是根据传入的两个一维数组参数生成两个数组元素的列表。如果第一个参数是xarray,维度是xdimesion,第二个参数是yarray,维度是ydimesion。那么生成的第一个二维数组是以xarray为行,ydimesion行的向量;而第二个二维数组是以yarray的转置为列,xdimesion列的向量。 |
np.array(p_object, dtype=None, copy=True, order=‘K’, subok=False, ndmin=0) | 转化列表数据类型为ndarray |
np.c_[xx.ravel(), yy.ravel()] | 将两个数组中相同列的数据拼接起来,当做行;类似于pandas中的merge |
np.r_[xx.ravel(), yy.ravel()] | 将两个数组中所有行数据转化为一行数据;类似于pandas中的contact |
data.reshape(-1, m) | 表示事先不知道数据总数有多少个,numpy会自动计算数据的总数n,变化成为n列m行的数据 |
np.vstack([a,b]) | 将a,b两个numpy对象按行堆叠到一块,列不变 |
np.hstack(arr1, arr2) | 将两个数组进行堆叠,可以是一维或者多维(tuple/list),相当于分别合并 |
np.dtype类型 | |
np.bool | 布尔值 |
np.int | 整型 |
np.float | 浮点型 |
np.complex | 复数 |
np.object | 对象 |
np.string_ | ASCII字符 |
np.unicode_ | Unicode所有字符, 字节数平台决定 |
# np读取csv文件
numpy提供了便捷的内部文件存取,将数据存为np专用的npy(二进制格式)或npz(压缩打包格式)格式
npy格式以二进制存储数据的,在二进制文件第一行以文本形式保存了数据的元信息(维度,数据类型),可以用二进制工具查看查看内容
npz文件以压缩打包文件存储,可以用压缩软件解压
# 读取csv文件
np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)
# 去掉b'0.00'中的b
np.loadtxt('a.csv', dtype=bytes, delimiter=',').astype(str)
c = np.load('x.npy') # .npy文件读入数组
d = np.load("y.npz") # .npz压缩包读入
# 存储csv文件,本身是ASCII字符,不能存储非ASCII字符串,csv文件只能存储一维、二维数据,不能存储多维数据
np.savetxt(frame,array,fmt='%.18e',delimiter=None)
np.save('a.npy',a) # 存为.npy文件
np.savez("a.npz", ar0 = a, ar1 = b) # 多个数组存入一个.npz压缩包
参数解释 | |
---|---|
参数 | 解释 |
frame | 文件、字符串或产生器,可以是.gz或者bz2压缩文件 |
dtype | 数据类型,可选,CSV的字符串以什么数据类型读入数组中,默认np.float |
delimiter | 分隔字符串,默认是任何空格,改为逗号 |
skiprows | 跳过前x行,一般跳过第一行表头 |
usecols | 读取指定的列,索引,元组类型 |
unpack | 如果True,读入属性将分别写入不同的数组变量,False读入数据只写入一个数组变量,默认False |
原文:https://blog.csdn.net/u012089823/article/details/81672120