zoukankan      html  css  js  c++  java
  • NumPy常见的数组操作整理

    1.修改数组的形状

    1. reshape :不改变数据
    2. flat :        数组迭代器
    3. flatten:    返回一份数据拷贝
    4. ravel:      返回展开的数组

    flat迭代器的使用:

    for element in a.flat:

         print(element)

    flatten:返回一份拷贝的数据:

    ndarry.flatten(order='C')    #order可选

    reval展开数组:

    ndarray.reval(order='C‘)    #order可选

    2.翻转数组

    1. transpose 对换数组维度
    2. ndarray.T 与transpose相同
    3. rollaxis     向后滑动指定的轴
    4. swapaxes 对换数组的两个轴
    import numpy as np
    a=np.arange(12).reshape(3,4)
    print('原数组')
    print(a)
    print('转置数组')
    print(a.T)

    运算结果:

    原数组
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
    转置数组
    [[ 0  4  8]
     [ 1  5  9]
     [ 2  6 10]
     [ 3  7 11]]
    
    Process finished with exit code 0

    * numpy.rollaxis 函数向后滚动特定的轴到一个特定位置,格式如下:

    numpy.rollaxis(arr,axis,start)

    • arr:数组
    • axis:要向后滚动的轴,其它轴的相对位置不会改变
    • start:默认为零,表示完整的滚动。会滚动到特定位置。

    numpy.swapaxes

    用于转换数组的两个轴,格式如下:

    numpy.swapaxes(arr,axis1,axis2)

    • arr:输入的数组
    • axis1:对应第一个轴的整数
    • axis2:对应第二个轴的整数

    numpy.broadcast

    numpy.broadcast 用于模仿广播的对象,它返回一个对象,该对象封装了将一个数组广播到另一个数组的结果。

    该函数使用两个数组作为输入参数,如下实例:

    x=np.array([[1],[2],[3])

    y=np.array([4,5,6])

    b=np.broadcast(x,y)  #对x y 进行广播,并且拥有自身组件的迭代器元组

    r,c=b.iters

    print(next(r),next(c)) #对x y进行广播

    print(shape)  #返回广播对象的形状

    numpy.expend_dims

    该函数通过在指定位置插入新的轴来扩展数组的形状:

    numpy.expend_dims(arr,axis)

    arr:输入数组

    axis:新轴插入的位置

    numpy.squeeze 函数从给定数组的形状中删除一维的条目,函数格式如下:

    numpy.squeeze(arr, axis)
    • arr:输入数组
    • axis:整数或整数元组,用于选择形状中一维条目的子集
     

    3.连接数组

    concatenate : 连接沿着现有轴数组的序列

    stack :            沿着新的轴加入一系列数组

    hstack:           水平堆叠序列中的数组

    vstack:            垂直堆叠序列中的数组

    例如对于 a b 两个数组

     print (np.concatenate((a,b))) #'沿轴 Y 连接两个数组

     print (np.concatenate((a,b),axis = 1))#'沿轴 X 连接两个数组

    4.分割数组

    split:   将一个数组分割为多个子数组
    hsplit: 将一个数组水平分割为多个子数组(按列)
    vsplit: 将一个数组垂直分割为多个子数组(按行)

    5.数组元素的添加与删除

    resize   返回指定形状的新数组

    append 将值添加到末尾

    insert    沿着指定的轴将值插入到指定下标之下

    delete   删除某个轴的子数组,并返回删除后的新数组

    unique  查找数组内的唯一元素

       resize的应用:

    格式:numpy.resize(arr, shape)
    b = np.resize(a,(3,3)) print (b)

       append的应用:格式:numpy.append(arr, values, axis=None)print


    (np.append(a, [7,8,9]))#像数组a添加元素
    (np.append(a,[[7,8,9]],axis=0) #沿着Y轴添加元素

    insert的应用: 格式:numpy.insert(arr,obj,values,axis)
    print (np.insert(a,3,[11,12])) 就是指在数组a的下标3上插入数组[11,12]d

       delect的应用:

    Numpy.delete(arr, obj, axis)
    • arr:输入数组
    • obj:可以被切片,整数或者整数数组,表明要从输入数组删除的子数组
    • axis:沿着它删除给定子数组的轴,如果未提供,则输入数组会被展开

        如删除数组a的第二列:  np.delete(a,1,axis = 1))  

    a=np.arange(12).reshape(3,4)
    print('原数组')
    print(a)
    print(' ')
    print(np.delete(a,1,axis = 0))

    运行结果:

       原数组
       [[ 0 1 2 3]
       [ 4 5 6 7]
       [ 8 9 10 11]]


    [[ 0 1 2 3] [ 8 9 10 11]] Process finished with exit code 0

     np.delete(a,1,axis = 0)中是对第二行进行删除操作

    numpy.unique

    去除数组中的重复元素

    numpy.unique(arr,return_index,return_inverse,return_counts)

    • arr:输入数组,如果不是一维数组则会展开
    • return_index:如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储
    • return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储
    • return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数
    # 去除数组中重复的元素 unique
    au = np.array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])

    u=np.unique(au)
    u,indices=np.unique(au,return_inverse=True)
    print(u)
    print(' ')
    print(indices)

    运行结果:

    [2 5 6 7 8 9]
    
    
    [1 0 2 0 3 1 2 4 0 5]
    
    Process finished with exit code 0
  • 相关阅读:
    Java注解详解
    浅析@Deprecated
    BeanUtils使用概要
    使用内省方式操作JavaBean
    怎样通过ajax提交数据
    Java 反射学习笔记
    jackson 学习笔记
    Dom4j 学习笔记
    Tensorflow打造聊天机器人
    Hive官方文档
  • 原文地址:https://www.cnblogs.com/supershuai/p/12219299.html
Copyright © 2011-2022 走看看