zoukankan      html  css  js  c++  java
  • Numpy

    Numpy

    1.创建ndarray

    ndarray指的是n维数组
    array01 = numpy.array(object, dtype = None, copy = True, order = None, subok =  False, ndmin = 0)
    #  ndmin最小维度 
    a = np.array([1, 2, 3, 4, 5], ndmin =  2)
    a [[1, 2, 3, 4, 5]]
    
    参数说明
    object 数组对象可以是list,也可以是array
    dtype 数据的类型,有np.int8,np.string_等
    copy 对象是否需要拷贝
    order 创建数据的样式,“C”为行方向,“F”为列方向,"A"为任意方向
    subok 默认返回与基本数据类型一致的数组
    ndmin 指定生成数组的最小维度

    2. 数据类型

    import numpy as np
    np.int8、np.int16 ...np.int64  节省空间
    np.bool_ 布尔类型
    np.float_
    np.object_
    

    3.数组属性

    数组应当有维度,大小,类型等
    array.ndim 指的是几维度
    array.shape 几行几列的
    array.size   元素的个数
    array.dtype   元素数据类型
    array.flat    数组的转置
    

    4.数组的创建

    4.1 np.zeros

    numpy.zeros(shape, dtype = float, order = 'C')
    生成全是0的数组
    

    4.2 np.ones

    numpy.ones(shape, dtype = None, order = 'C')
    生成全是1的数组,shape指定形状
    

    4.3 np.arange

    numpy.arange(start, stop, step, dtype)
    和range相似,生成维度是一的
    

    5.数组索引相关

    5.1 整数数组索引

    arr01 = np.array([[1,2],  [3,  4],  [5,  6]]) 
    arro2 = arr01[[0,1,2],  [0,1,0]]  
    print (arro2)   取(0,0)、(1,1)、(2,0)放在一个一维的数组中
    
    arr03 = arr01[[[1,1],[0,0]],[[1,1],[1,1]]]
    
    # [[1,1],[0,0]] 二行二列的索引,生成的也是二行二列,
    arr04 = arr01[[[[1],[1]],[[1],[1]]],[[[1],[1]],[[1],[1]]]]
    # [[[1],[1]],[[1],[1]]]  2页2行一列的数组 
    

    5.2 布尔索引

    arr01 = np.array([[1,2],  [3,  4],  [5,  6]])
    # 取出大于3的
    arr02 = arr01[arr01>3]
    

    5.3 花式索引

    花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应下标的行,如果目标是二维数组,那么就是对应位置的行元素。花式索引跟切片不一样,它总是将数据复制到新数组中。import numpy as np x=np.arange(32).reshape((8,4))print (x[np.ix_([1,5,7,2],[0,3,1,2])])np.ix_([1,5,7,2],[0,3,1,2]) # 笛卡尔积
    

    6 广播机制

    6.1 shape一样

    shape一样,对位相运算
    

    6.2 shape不一样

    1. [[1,2,3],[4,5,6]] + [1,2,3]2. [[1,2,3],[4,5,6]] + [[1],[2]]要么列数一样,要么行数一样,但要都是一行或者一列的
    

    7 遍历迭代

    数组有几行几列,可以像list一样遍历1.for x in np.nditer(a, order='F'):Fortran order,即是列序优先;2.for x in np.nditer(a.T, order='C'):C order,即是行序优先;3. for i in arr.flat4.广播迭代a  = [[1,2,3],[1,2,3]]b = [2,3,4]for x,y in np.nditer([a,b]):      print ("%d:%d"  %  (x,y), end=", " )
    

    8.数组操作

    8.1修改数组的形状

    函数 
    reshape 和原来的数据没有关系,原来的没有被改变
    flat 转成一维的
    flatten ndarray.flatten(order='C') 'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'K' -- 元素在内存中的出现顺序。

    8.2 翻转数组

    np.tarnspose(arr,axes)np.transpose(arr01,axes=(1,0))axes 原来对应 0,1现在对应 1,0 意味着 原来的行变成列,列变成行
    

    8.3连接数组

    函数 
    concatenate 函数用于沿指定轴连接相同形状的两个或多个数组
    stack 函数用于沿新轴连接数组序列 axis 为0 以行
    hstack 水平堆叠
    vstack 垂直堆叠
    1. concatenatea = np.array([[1, 2], [3, 4]])b = np.array([[5,],[ 6]])concatente(a,b,axis=1)c = np.array([[1,2]])concatente(a,b,axis=0)2. stacka = np.array([[1,2],[3,4]])b = np.array([[5,6],[7,8]])print (np.stack((a,b),0))print (np.stack((a,b),1))  # 三维的
    

    8.4 数组切分

    函数数组操作
    split 将一个数组分割为多个子数组
    b = np.split(a,3)b = np.split(a,[4,7]) # 0 到 4 5到7  8到---
    

    8.5 数组元素删除和添加

    函数元素及描述
    resize 返回指定形状的新数组
    append 将值添加到数组末尾
    insert 沿指定轴将值插入到指定下标之前
    delete 删掉某个轴的子数组,并返回删除后的新数组
    unique 查找数组内的唯一元素
    clip 修剪,小于min变成min,大于max变成max
    1. np.resize	拉平,在塑造形状2. np.append(arr, values, axis=None)	当axis=None时,返回一维    为 0和1 的时候 形状要匹配3. np.insert(arr, obj, values, axis)	当 axis = None ,拉平在添加    其他会广播 4. np.delete(arr, obj, axis)	obj为整数或整数数组  axis为维度,当为0的时候,拉平 5.  numpy.unique(arr, return_index, return_inverse, return_counts)	return_index:如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储	return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储	return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数
    

    9 统计函数

    numpy.amin() 用于计算数组中的元素沿指定轴的最小值。numpy.amax() 用于计算数组中的元素沿指定轴的最大值axis = 0 横向的最大值,也就是每列的最大值axis = 1 竖直方向最大值,就是每行的最大值numpy.median()numpy.mean() 函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算np.var([1,2,3,4])  # 方差标准差是方差的平方根
    

    10. 排序

    1. np.sort(arr,axis)axis = None 最后轴方向排序axis = 1 沿着列2. numpy.where() 函数返回输入数组中满足给定条件的元素的索引。
    

    11. 文件读写

    np.loadtxt(FILENAME, dtype=int, delimiter=' ')np.savetxt(FILENAME, a, fmt="%d", delimiter=",")a = np.array([1,2,3,4,5]) np.savetxt('out.txt',a) b = np.loadtxt('out.txt')   print(b)
    
    永远不要高估自己
  • 相关阅读:
    react-路由简单封装
    promise 和 async / await
    数据结构 栈 、 队列 、 链表
    ES6 Symbol
    react-react常用包与对应使用
    node-egg的使用
    自我理解与概述-BFC(Block formatting context)
    Git
    MySQL优化技巧
    Shiro
  • 原文地址:https://www.cnblogs.com/liqiangwei/p/15064599.html
Copyright © 2011-2022 走看看