zoukankan      html  css  js  c++  java
  • Numpy 数组操作

    修改数组形状

    函数描述
    reshape不改变数据的条件下修改形状
    flat数组元素迭代器
    flatten返回一份数组拷贝,对拷贝所做的修改不会影响原始数组
    ravel返回展开数组

    numpy.reshape
    numpy.reshape 函数可以在不改变数据的条件下修改形状,格式如下:
    numpy.reshape(arr, newshape, order=‘C’)

    • arr:要修改形状的数组
    • newshape:整数或者整数数组,新的形状应当兼容原有形状
    • order:‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘k’ – 元素在内存中的出现顺序。

    numpy.ndarray.flat
    numpy.ndarray.flat 是一个数组元素迭代器,实例如下:

    import numpy as np
     
    a = np.arange(9).reshape(3,3) 
    print ('原始数组:')
    for row in a:
        print (row)
     
    #对数组中每个元素都进行处理,可以使用flat属性,该属性是一个数组元素迭代器:
    print ('迭代后的数组:')
    for element in a.flat:
        print (element)

    输出结果如下:

    原始数组:
    [0 1 2]
    [3 4 5]
    [6 7 8]
    迭代后的数组:
    0
    1
    2
    3
    4
    5
    6
    7
    8

    numpy.ndarray.flatten
    numpy.ndarray.flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组,格式如下:

    ndarray.flatten(order='C')

    参数说明:
    order:‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘K’ – 元素在内存中的出现顺序。

    import numpy as np
     
    a = np.arange(8).reshape(2,4)
     
    print ('原数组:')
    print (a)
    print ('
    ')
    # 默认按行
     
    print ('展开的数组:')
    print (a.flatten())
    print ('
    ')
     
    print ('以 F 风格顺序展开的数组:')
    print (a.flatten(order = 'F'))

    输出结果如下:

    原数组:
    [[0 1 2 3]
     [4 5 6 7]]
    
    
    展开的数组:
    [0 1 2 3 4 5 6 7]
    
    
    以 F 风格顺序展开的数组:
    [0 4 1 5 2 6 3 7]

    numpy.ravel
    numpy.ravel() 展平的数组元素,顺序通常是"C风格",返回的是数组视图(view,有点类似 C/C++引用reference的意味),修改会影响原始数组。

    该函数接收两个参数:

    numpy.ravel(a, order='C')

    参数说明:

    order:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'K' -- 元素在内存中的出现顺序。
    import numpy as np
     
    a = np.arange(8).reshape(2,4)
     
    print ('原数组:')
    print (a)
    print ('
    ')
     
    print ('调用 ravel 函数之后:')
    print (a.ravel())
    print ('
    ')
     
    print ('以 F 风格顺序调用 ravel 函数之后:')
    print (a.ravel(order = 'F'))

    输出结果如下:

    原数组:
    [[0 1 2 3]
     [4 5 6 7]]
    
    
    调用 ravel 函数之后:
    [0 1 2 3 4 5 6 7]
    
    
    以 F 风格顺序调用 ravel 函数之后:
    [0 4 1 5 2 6 3 7]

    翻转数组

    函数描述
    transpose对换数组的维度
    ndarray.T和 self.transpose() 相同
    rollaxis向后滚动指定的轴
    swapaxes对换数组的两个轴

    numpy.transpose
    numpy.transpose 函数用于对换数组的维度,格式如下:
    numpy.transpose(arr, axes)
    参数说明:

    • arr:要操作的数组
    • axes:整数列表,对应维度,通常所有维度都会对换。
      numpy.rollaxis
      numpy.rollaxis 函数向后滚动特定的轴到一个特定位置,格式如下:
      numpy.rollaxis(arr, axis, start)
      参数说明:
    • arr:数组
    • axis:要向后滚动的轴,其它轴的相对位置不会改变
    • start:默认为零,表示完整的滚动。会滚动到特定位置。

    numpy.swapaxes
    numpy.swapaxes 函数用于交换数组的两个轴,格式如下:
    numpy.swapaxes(arr, axis1, axis2)

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

    修改数组维度

    维度描述
    broadcast产生模仿广播的对象
    broadcast_to将数组广播到新形状
    expand_dims扩展数组的形状
    squeeze从数组的形状中删除一维条目

    连接数组

    函数描述
    concatenate连接沿现有轴的数组序列
    stack沿着新的轴加入一系列数组。
    hstack水平堆叠序列中的数组(列方向)
    vstack竖直堆叠序列中的数组(行方向)

    numpy.concatenate
    numpy.concatenate 函数用于沿指定轴连接相同形状的两个或多个数组,格式如下:
    numpy.concatenate((a1, a2, …), axis)
    参数说明:

    a1, a2, ...:相同类型的数组
    axis:沿着它连接数组的轴,默认为 0

    numpy.stack
    numpy.stack 函数用于沿新轴连接数组序列,格式如下:
    numpy.stack(arrays, axis)
    参数说明:

    arrays相同形状的数组序列
    axis:返回数组中的轴,输入数组沿着它来堆叠

    numpy.hstack
    numpy.hstack 是 numpy.stack 函数的变体,它通过水平堆叠来生成数组。
    numpy.vstack
    numpy.vstack 是 numpy.stack 函数的变体,它通过垂直堆叠来生成数组。
    分割数组

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

    numpy.split
    numpy.split 函数沿特定的轴将数组分割为子数组,格式如下:
    numpy.split(ary, indices_or_sections, axis)
    参数说明:

    ary:被分割的数组
    indices_or_sections:果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位
    置(左开右闭) 
    axis:沿着哪个维度进行切向,默认为0,横向切分。为1时,纵向切分

    numpy.hsplit
    numpy.hsplit 函数用于水平分割数组,通过指定要返回的相同形状的数组数量来拆分原数组。
    numpy.vsplit
    numpy.vsplit 沿着垂直轴分割,其分割方式与hsplit用法相同。
    数组元素的添加与删除

    函数元素及描述
    resize返回指定形状的新数组
    append将值添加到数组末尾
    insert沿指定轴将值插入到指定下标之前
    delete删掉某个轴的子数组,并返回删除后的新数组
    unique查找数组内的唯一元素

    numpy.resize
    numpy.resize 函数返回指定大小的新数组。
    如果新数组大小大于原始大小,则包含原始数组中的元素的副本。
    numpy.resize(arr, shape)
    参数说明:

    arr:要修改大小的数组
    shape:返回数组的新形状

    numpy.append
    numpy.append 函数在数组的末尾添加值。 追加操作会分配整个数组,并把原来的数组复制到新数组中。 此外,输入数组的维度必须匹配否则将生成ValueError。
    append 函数返回的始终是一个一维数组。
    numpy.append(arr, values, axis=None)
    参数说明:

    arr:输入数组
    values:要向arr添加的值,需要和arr形状相同(除了要添加的轴)
    axis:默认为 None。当axis无定义时,是横向加成,返回总是为一维数组!当axis有定义的时
    候,分别为01的时候。当axis有定义的时候,分别为01的时候(列数要相同)。当axis为1
    时,数组是加在右边(行数要相同)。

    numpy.insert
    numpy.insert 函数在给定索引之前,沿给定轴在输入数组中插入值。
    如果值的类型转换为要插入,则它与输入数组不同。 插入没有原地的,函数会返回一个新数组。 此外,如果未提供轴,则输入数组会被展开。
    numpy.insert(arr, obj, values, axis)
    参数说明:

    arr:输入数组
    obj:在其之前插入值的索引
    values:要插入的值
    axis:沿着它插入的轴,如果未提供,则输入数组会被展开

    numpy.delete
    numpy.delete 函数返回从输入数组中删除指定子数组的新数组。 与 insert() 函数的情况一样,如果未提供轴参数,则输入数组将展开。
    Numpy.delete(arr, obj, axis)
    参数说明:

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

    numpy.unique
    numpy.unique 函数用于去除数组中的重复元素。
    numpy.unique(arr, return_index, return_inverse, return_counts)

    arr:输入数组,如果不是一维数组则会展开
    return_index:如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储
    return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储
    return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数
    别废话,拿你代码给我看。
  • 相关阅读:
    hdu 4614 线段树 二分
    cf 1066d 思维 二分
    lca 最大生成树 逆向思维 2018 徐州赛区网络预赛j
    rmq学习
    hdu 5692 dfs序 线段树
    dfs序介绍
    poj 3321 dfs序 树状数组 前向星
    cf 1060d 思维贪心
    【PAT甲级】1126 Eulerian Path (25分)
    【PAT甲级】1125 Chain the Ropes (25分)
  • 原文地址:https://www.cnblogs.com/lvxueyang/p/13707508.html
Copyright © 2011-2022 走看看