NumPy

作者: 天际神游 | 来源:发表于2018-04-15 23:17 被阅读8次

    NumPy本身没有提供多么高级的数据分析功能,理解NumPy数组以及面向对象数组的计算将有利于更加高效的使用诸如pandas之类的工具。默认这样使用numpy:

    import numpy as np
    

    NumPy最重要的一个特点就是N维数组对象ndarray,该对象是一个快速而灵活的大数据集容器。

    ndarray对象的属性及方法表(下面简称数组):

    属性方法 作用
    shape 维度大小
    dtype 数据类型
    array 把序列型对象转化为ndarraydtype可以显式指明类型
    ndim 维度
    矢量化(vectorization)运算 数组对应元素相加减乘除,无需编写循环,如:a2 = a*a, c= a-b(数组维度需要相同), 'a/2'a中所有元素都会除以2
    np.zeros(10),np.zeros_like(数组) 创建全0数组
    np.ones((2, 3)),np.ones_like(数组) 创建全1数组
    np.empty((1, 2, 3)),np.empty_like(数组) 创建空的数组(数组未初始化)
    np.eye(2) or np.identity(1) 创建n*n单位矩阵
    np.arange(10) 类似Python内置函数range()
    astype(np.int32) 显式的转化其dtype,字符串也可以转化!但是是新的数组,即使新旧的dtype相同
    [3] 索引
    [5:8] 切片(这里的切片只是视图,而非副本,如要副本,[5:8].copy())
    [布尔型数组] 可以作为索引(大小需匹配),一般可以这样使用,a[b < 0] = 0
    a[b == value, 2:] 与切片、整数可以混合使用
    花式索引 a[[5, 3, -2]]选取a的5,3,-2行;选取矩形区域a[[5,3,-1], [:, [0,2,1]]],还有一个方法是使用ix_它可以把两个一维数组转化成选取方形区域的索引器,如:a[np.ix_([5,3,-1], [0,2,1]],注意:花式索引总是把数据复制到新的数组中
    reshape 改变原有数组的形状
    T 返回原数组转置后的视图,不进行任何复制操作
    np.dot(a.T, a) 计算矩阵内积aTa
    transpose((1,0,3)) 需要得到一个由轴编号组成的原组才能对这些轴进行转置
    swapaxes(1,2) 接受一对轴编号进行轴对换,只是返回视图,不进行复制操作

    np的一些方法:

    属性方法 作用
    通用函数(ufunc) 是对ndarray中的数据执行元素级运算的函数,可以看做是简单函数的矢量包装器
    一元ufunc
    abs, fabs 计算整数、浮点数或复数的绝对值;对于非复数,使用后者速度更快
    sqrt 计算各元素的平方根,类似:a ** 0.5
    square 计算各元素的平方
    exp 计算各元素的指数ex
    log, log10, log2, log1p 分别为底数是自然对数e, 10, 2以及log(1+x)
    sign 计算各元素正负号,整数、零、负数分别是1,0,-1
    ceil 计算各元素的ceiling值,即大于等于该值的最小整数
    floor 计算各元素的floor值,即大于等于该值的最大整数
    rint 将各元素四舍五入到最接近的整数值,保留dtype
    modf 将数组的小数和整数部分以两个独立数组的形式返回
    isnan 返回一个表示那些是NaN的布尔型数组
    isfinite, isinf 分别返回一个表示那些元素是有穷的(非inf, 非NaN)或那些元素是无穷的
    cos, cosh, sin, sinh,tan, tanh 普通型和双曲型三角函数
    arccos, arccosh, arcsin, arcsinh, arctan, arctanh 反三角函数
    logical_not 计算各元素的not x的真值(返回一个布尔类型的数组)
    二元ufunc
    add 相加
    subtract 相减
    multiply 相乘
    divide, floor_divide 除法或向下取整除法(类似python //)
    power(a,b) 求ab
    maximum, fmax 最大值计算,fmax将忽略NaN
    minimum, fmin 最大值计算,fmin将忽略NaN
    mod 求模
    copysign 将第二个数组值的符号复制给第一个数组的
    greater、greater_equal、less、less_equal、equal、not_equal 比较,最终产生布尔型数组
    logical_and、logical_or、logical_xor 逻辑运算
    where(a>0,b,c) 类似python三元表达式
    数学和统计方法 既可以被ndarray调用,也可以被np调用
    sum 求和,可以通过axis指定某轴向的元素
    mean 算术平均数,零长度的数组的sum为0
    std、var 分别为标准差,方差,自由度可调整(默认为n)
    min、max 最大值和最小值
    argmin、argmax 分别为最大和最小元素的索引
    cumsum 所有元素累计和
    cumprod 所有元素的累计积
    常用于布尔类型的方法
    举例如下:
    a(>0).sum() 求正值的数量
    bools.any() 是否存在一个或多个True
    bools.all() 是否全部为True
    a.sort() 就地升序排序,可以通过axis指定轴向
    unique(a) 找出数组中唯一值(类似pythonset)并返回已排序的结果
    intersect1d(a, b) 计算a、b的公共元素,并返回有序的结果
    union1d(a, b) 计算a、b的并集,并返回有序结果
    in1d(a,b) 得到一个表示a是包含于b的布尔型数组(?a中元素在b中即为True)
    setdiff1d(a,b) 集合的差,在a中不在b中
    setxor1d(a,b) 集合的对称差,即只在一个数组中,即,‘异或’
    用于数组的文件输入输出
    save('file1', a) 默认以未压缩的原始二进制格式保存在拓展名为.npy的文件中
    load('file1.npy') 读取
    savez('file1.npz', a=arr1, b=arr2) 多个数组保存到一个压缩文件,load .npz文件会得到一个字典类型的数组,获取a, b数组,a['a'], a['b']
    loadtxt('file1.txt', delimiter=',') 读取txt文件,以,分割
    线性代数
    a*b 计算的是a和b对应元素的积,而非点积
    dot 矩阵点积
    numpy.linalg 这个库有常用的矩阵分解运算等关于矩阵的函数,常用函数如下:
    diag 以一维数组的形式返回方阵的对角线(或非对角线元素)
    dot 矩阵乘法
    trace 计算对角线元素和
    det 计算矩阵行列式
    eig 计算方阵的本征值和本征向量
    inv 求逆
    pinv 计算矩阵的Moore-Penrose伪逆
    qr 计算QR分解
    svd 计算奇异值分解
    solve 解线性方程Ax=b,其中A为一个方阵
    lstsq 计算Ax=b的最小二乘解
    随机数生成
    np.random.normal(size=(4, 4)) 生成标准正态分布
    seed 确定随机数生成种子
    permutation 返回一个的随机排列或返回一个随机排列的范围
    shuffle 对一个序列就地随机排列
    rand 产生均匀分布的样本值
    randint 给定的上下限范围内随机选取整数
    randn 产生正态分布
    binomial 产生二项分布
    normal 产生高斯分布
    beta 产生Beta分布的样本值
    chisquare 产生卡方分布样本值
    gamma 产生Gamma分布样本值
    uniform 产生在[0, 1)中均匀分布的样本值

    相关文章

      网友评论

        本文标题:NumPy

        本文链接:https://www.haomeiwen.com/subject/rsdlkftx.html