美文网首页
Numpy基础——第二篇

Numpy基础——第二篇

作者: XaviSong | 来源:发表于2020-08-12 23:31 被阅读0次

    本章内容:

    1. 数组的删除
    2. 数组的去重
    3. 数组的拼接
    4. 数组分割
    5. 数组转置
    6. Numpy计算函数

    一、数组的删除

    delete函数

    参数说明:

    arr:输入数组
    obj:可以被切片,整数或者整数数组,表明要从数组删除的子数组
    axis:沿着它删除给定子数组的轴,如果未提供,则输入数组会被展开
    
    a = np.arange(12).reshape(3,4)
    print(a)
    '''
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
    '''
    print(np.delete(a,5))
    '''
    [ 0  1  2  3  4  6  7  8  9 10 11]
    '''
    print(np.delete(a,1,axis=1)) # 删除每一行的第二列
    '''
    [[ 0  2  3]
     [ 4  6  7]
     [ 8 10 11]]
    '''
    

    二、数组的去重

    unique函数

    参数说明:

    arr:输入数组,如果不是一维数组则会展开
    return_index:如果为True,返回新列表元素在原列表中的下标,并以列表形式存储
    return_inverse:如果为True,返回旧列表元素在新列表中的下标,并以列表形式存储
    return_counts:如果为True,返回去重数组元素在原数组中出现的次数
    
    a = np.array([5,2,6,2,7,5,6,8,2,9])
    print(np.unique(a))
    print(np.unique(a,return_index=True))
    print(np.unique(a,return_inverse=True))
    print(np.unique(a,return_counts=True))
    '''
    [2 5 6 7 8 9]
    
    (array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 4, 7, 9], dtype=int64))
    
    (array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 0, 3, 1, 2, 4, 0, 5], dtype=int64))
    
    (array([2, 5, 6, 7, 8, 9]), array([3, 2, 2, 1, 1, 1], dtype=int64))
    '''
    

    三、数组的拼接

    1、根据轴连接
    concatenate函数
    a = np.array([[1,2],[3,4]])
    b = np.array([[5,6],[7,8]])
    print(np.concatenate((a,b),axis=0))
    print(np.concatenate((a,b),axis=1))
    '''
    [[1 2]
     [3 4]
     [5 6]
     [7 8]]
     
    [[1 2 5 6]
     [3 4 7 8]]
    '''
    
    2、根据轴堆叠
    区别:shape的维度会提升
    a = np.array([[1,2],[3,4],[5,6]])
    b = np.array([[5,6],[7,8],[9,10]])
    print(np.stack((a,b),axis=0))
    print(np.stack((a,b),axis=1))
    print(np.stack((a,b),axis=0).shape)
    print(np.stack((a,b),axis=1).shape)
    '''
    [[[ 1  2]
      [ 3  4]
      [ 5  6]]
    
     [[ 5  6]
      [ 7  8]
      [ 9 10]]]
      
    [[[ 1  2]
      [ 5  6]]
    
     [[ 3  4]
      [ 7  8]]
    
     [[ 5  6]
      [ 9 10]]]
      
    (2, 3, 2)
    (3, 2, 2)
    '''
    
    3、矩阵拼接
    np.vstack((a,b))与np.concatenate((a,b),axis=0)等价
    np.hstack((a,b))与np.concatenate((a,b),axis=1)等价
    

    四、数组的分割

    split函数

    参数说明

    ary:被分割的数组
    indices_or_sections:如果为一个数,用该数平均切分,如果是切片,为沿轴切分的索引位置
    axis:轴,默认为0,沿轴0切分
    
    arr = np.arange(8).reshape(4,2)
    print(arr)
    b = np.split(arr,2)
    print(b)
    c = np.split(arr,[0,1])
    print(c)
    '''
    [[0 1]
     [2 3]
     [4 5]
     [6 7]]
    [array([[0, 1],
           [2, 3]]), array([[4, 5],
           [6, 7]])]
    [array([], shape=(0, 2), dtype=int32), array([[0, 1]]), array([[2, 3],
           [4, 5],
           [6, 7]])]
    '''
    
    hsplit与vsplit函数
    arr = np.arange(12).reshape(4,3)
    print(arr)
    # 沿轴1切割
    b = np.vsplit(arr,2)
    print(b)
    # 沿轴0切割
    c = np.hsplit(arr,[0,1])
    print(c)
    '''
    [[ 0  1  2]
     [ 3  4  5]
     [ 6  7  8]
     [ 9 10 11]]
    [array([[0, 1, 2],
           [3, 4, 5]]), array([[ 6,  7,  8],
           [ 9, 10, 11]])]
    [array([], shape=(4, 0), dtype=int32), array([[0],
           [3],
           [6],
           [9]]), array([[ 1,  2],
           [ 4,  5],
           [ 7,  8],
           [10, 11]])]
    '''
    

    五、二维数组转置

    transpose、T、swapaxes
    arr = np.arange(12).reshape(4,3)
    print(arr)
    print(np.transpose(arr))
    print(arr.T)
    print(arr.swapaxes(1,0))
    '''
    [[ 0  1  2]
     [ 3  4  5]
     [ 6  7  8]
     [ 9 10 11]]
     
    [[ 0  3  6  9]
     [ 1  4  7 10]
     [ 2  5  8 11]]
     
    [[ 0  3  6  9]
     [ 1  4  7 10]
     [ 2  5  8 11]]
     
    [[ 0  3  6  9]
     [ 1  4  7 10]
     [ 2  5  8 11]]
    '''
    

    六、Numpy计算函数

    基本的10个函数: 最大值、最小值、极值替代、平均值、累加和、argmin、标准差、极差
    score = np.array([[80,88],[82,81],[75,81]])
    result = np.max(score)
    '''
    88
    '''
    result = np.max(score,axis = 0)
    '''
    array([82, 88])
    '''
    result = np.min(score)
    '''
    75
    '''
    result = np.min(score,axis = 0)
    '''
    array([75, 81])
    '''
    result = np.minimum([-2,-1,0,1,2],0)
    '''
    array([-2, -1,  0,  0,  0])
    '''
    result = np.maximum([-2,-1,0,1,2],0)
    '''
    array([0, 0, 0, 1, 2])
    '''
    result = np.maximum([-2,-1,0,1,2],[1,2,3,4,5])
    '''
    array([1, 2, 3, 4, 5])
    '''
    result = np.mean(score)
    '''
    81.16666666666667
    '''
    result = np.mean(score,axis = 0)
    '''
    array([79., 83.33333333])
    '''
    result = score.cumsum(0)
    '''
    array([[ 80,  88],
           [162, 169],
           [237, 250]], dtype=int32)
    '''
    result = score.cumsum(1)
    '''
    array([[ 80, 168],
           [ 82, 163],
           [ 75, 156]], dtype=int32)
    '''
    result = np.argmin(score,axis = 0)
    '''
    array([2, 1], dtype=int64)
    '''
    result = np.std(score,axis = 0)
    '''
    array([2.94392029, 3.29983165])
    '''
    result = np.ptp(score,axis = None)
    '''
    13
    '''
    
    更多拓展:
    numpy. sqrt(array)          平方根函数
    numpy. exp(array)           e^array[i]的数组
    numpy. abs/fabs(array)       计算绝对值
    numpy. square(array)         计算各元素的平方等于array**2
    numpy. log/1og10/1og2(array)    计算各元素的各种对数
    numpy. sign(array)          计算各元素正负号
    numpy. isnan(array)         计算各元素是否为NaN
    numpy. isinf (array)        计算各元素是否为NaN
    numpy. cos/cosh/s in/s inh/tan/tanh(array)三角函数
    numpy. modf(array)          将array中值得整数和小数分离,作两个数组返回
    numpy. ceil(array)          向上取整,也就是取比这个数大的整数
    numpy. floor(array)         向下取整,也就足取比这个数小的整数
    numpy. rint(array)          四舍五入
    numpy. trunc(array)         向0取整
    numpy. cos(array)           正弦值
    numpy. sin(array)           余弦值
    numpy. tan(array)           正切值
    numpy. add(array1 ,array2)          元素级加法
    numpy. subtract(array1,array2)      元素级减法
    numpy. multiply(array1 , array2)    元素级乘法
    numpy. divide(array1 ,array2)       元索级除法array1. /array2
    numpy. power(array1 , array2)       元素级指数array1. array2
    numpy. maximum/mini mum(array1 ,aray2)  元素级最大值
    numpy. fmax/fmin(array1 ,array2)        元素级最大值,忽略NaN
    numpy. mod(array1, array2)              元素级求模
    numpy. copysign(array1 ,array2)         将第二个数组中值得符号复制给第一个数组中值
    numpy. greater/greater. equa1/less/less_ equal/equal/not. equal (array1 , array2)元素级比较运算,产生布尔数组
    numpy. logical end/1ogical_or/logic_xor(array1 , array2)元素级的真值逻辑运算
    

    七、数组中的nan与inf

    np.nan:在以numpy为基础开发的pandas中比较常见,表示缺失的数值。任何数据与nan进行计算结果都是nan
    np.inf:表示无穷大,有inf与-inf。
    
    注意:np.nan!=np.nan的值为True, 根据这个条件可以判断nan的个数:
    np.count_nonzero(t != t)
    
    将nan替换为0
    t[np.isnan(t)] = 0
    

    相关文章

      网友评论

          本文标题:Numpy基础——第二篇

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