zoukankan      html  css  js  c++  java
  • Numpy库常用操作

    创建数组常用方式:

    np.arange(n) 返回一个0到n-1的数组
    np.ones(shape) shape为元组(行, 列),元素全部为1
    np.zeros(shape) 元素全部为0
    np.full(shape, val) 元全为val值
    np.eye(n) 创建一个正方的n*n单位矩阵,对角线全为1其余为0
    np.linspace(b, e, n) 根据起始值等间距的填充数据,返回数组

    import numpy as np
    print(np.arange(10))    # [0 1 2 3 4 5 6 7 8 9]
    print(np.ones((2, 4)))
    """[[1. 1. 1. 1.]
     [1. 1. 1. 1.]]"""
    print(np.zeros((4, 4)))
    """
    [[0. 0. 0. 0.]
     [0. 0. 0. 0.]
     [0. 0. 0. 0.]
     [0. 0. 0. 0.]]
    """
    print(np.full((3, 2), 10))
    """
    [[10 10]
     [10 10]
     [10 10]]
    """
    print(np.eye(3))
    """
    [[1. 0. 0.]
     [0. 1. 0.]
     [0. 0. 1.]]
    """
    print(np.linspace(1, 3, 10))
    """
    [1.         1.22222222 1.44444444 1.66666667 1.88888889 2.11111111
     2.33333333 2.55555556 2.77777778 3.        ]
    """
    

    获取数组对象的属性
    dim 获取维度
    shape 获取数组的行数,列数
    size 获取元素的个数,即: 行 * 列
    dtype 元素的类型

    import numpy as np
    n = np.array([[1, 2, 3, 4], [6, 7, 8, 9]])
    print(n.ndim)  # 2
    print(n.shape)  # (2, 4)
    print(n.size)   # 8
    print(n.dtype)  # int32
    

    genfromtxt函数
    传入的参数为:要打开的文档名称,分隔符,编码格式,以什么类型存储

    import numpy as np
    tmp = np.genfromtxt("1.txt", delimiter=",",encoding="UTF-8", dtype=str)
    print(tmp)
    """ ['核桃核' '不能吞下去' '核桃核太大了,吞下去容易噎着'] """
    

    == 运算

    import numpy as np
    a = np.array([5, 10, 15, 20])
    equal_to_ten = (a == 10)
    print(a[equal_to_ten])    # [10]
    

    &, | 运算

    import numpy as np
    a = np.array([3, 5, 7, 9])
    equal_to_ten_or_five = (a == 3) | (a == 7)
    print(a[equal_to_ten_or_five])  # [3 7]
    

    astype函数,将矩阵中的元素都修改成指定的类型

    import numpy as np
    a = np.array([3, 5, 7, 9])
    print(a.dtype)    # int32
    a = a.astype(str) 
    print(a.dtype)    # <U11
    

    Numpy库常用的统计函数

    函数名 函数说明
    min(axis) 得出矩阵中的最小值 ,axis=0,表示按列计算,axis=1: 表示按行计算
    max(axis) 得出矩阵中的最大值 ,axis=0,表示按列计算,axis=1: 表示按行计算
    sum(axis) 得出矩阵中的元素的和值 ,axis=0,表示按列计算,axis=1: 表示按行计算,不指定代表所有元素和
    mean(a,axis=None) 计算期望值
    average(a,axis=None,weights=None) 计算加权平均值
    std(a,axis=None) 计算标准差
    var(a,axis=None) 计算方差
    ptp(a) 计算最大值和最小值的差值
    median(a) 计算中位数

    例如:

    import numpy as np
    a = np.array([[3, 5, 7, 9],[10, 11, 12, 13]])
    print(a.sum())    # 70
    print(a.sum(axis=1))    # [24 46] 行
    print(a.sum(axis=0))     # [13 16 19 22]   列
    print(a.min(axis=1))    # [ 3 10] 行
    print(a.min(axis=0))     # [3 5 7 9]   列
    

    数组运算
    计算在这里插入图片描述Numpy库的随机数函数
    在这里插入图片描述矩阵的运算

    import numpy as np
    a = np.array([[1, 1],[0,1]])
    b = np.array([[2, 0],[3, 4]])
    print(a * b)    # 对应元素相乘
    """
    [[2 0]
     [0 4]]
    """
    print(a.dot(b))    # 矩阵算法
    """
    [[5 4]
     [3 4]]
    """
    

    ravel()函数
    将矩阵转成一行n*m的一维矩阵

    import numpy as np
    a = np.array([[1, 1], [0, 1], [3, 4]])
    print(a.ravel())    #  [1 1 0 1 3 4]
    print(a.T)  #  转置
    """
    [[1 0 3]
     [1 1 4]]
    """
    print(a.reshape(6, -1))    # eshape只要有一个参数确定,另一个参数就确定了,所以另一个参数如果你懒得算,直接写-1,python会自动计算另一个维度是多少 
    

    hstack()与vstack(): 将两个矩阵进行拼接
    hstack() 两个矩阵横着拼接
    vstack() 两个矩阵竖着拼接

    import numpy as np
    a = np.array([[1, 2], [3, 4]])
    b = np.array([[5, 6], [7, 8]])
    print(np.hstack((a, b)))
    """[[1 2 5 6]
     [3 4 7 8]]"""
    print(np.vstack((a, b)))
    """[[1 2]
     [3 4]
     [5 6]
     [7 8]]"""
    

    hsplit()和vsplit()函数: 将矩阵进行分割

    import numpy as np
    a = np.array([[1, 2, 3, 4, 5, 6, 7, 8], [9, 10, 11, 12 ,13, 14, 15, 16]])
    print(np.hsplit(a, 4))
    print(np.hsplit(a, (3, 4)))
    print(np.vsplit(a, 2))
    

    矩阵的复制
    其实就是python赋值的引用

    import numpy as np
    a = np.arange(8)
    b = a
    b.shape = 2, 4
    print(a.shape)    # (2, 4)
    print(id(a))    # 2197209465600
    print(id(b))     # 2197209465600
    

    使用View()的方式进行复制,其实是个浅复制,当修改副本矩阵的元素时,原矩阵相应位置元素也会改变.

    import numpy as np
    a = np.arange(8)
    # view()的方式复制
    b = a.view()
    b.shape = 2, 4
    b[0, 0] = 9
    print(a[:1])    # 9
    

    使用copy()方式进行复制,当修改副本矩阵的元素时,原矩阵相应位置元素不会改变.

    import numpy as np
    a = np.arange(8)
    # copy的方式复制
    b = a.copy()
    b.shape = 2, 4
    b[0, 0] = 9
    print(a[:1])    # 0
    

    argmax()函数获取矩阵最大值的下标,argmax(axis=0)表示按列寻找,argmax(axis=1)表示按行寻找

    import numpy as np
    a = np.arange(8)
    print(a.argmax())   # 7
    

    tile()函数 tile(data,(n,m)),将data矩阵扩展n行m列个

    import numpy as np
    a = np.arange(10, 40, 20)
    print(np.tile(a, (2, 2)))
    

    sort()函数

    import numpy as np
    a = np.array([[1, 7, 5],[1, 2, 1]])
    b = np.sort(a, axis=1)
    print(b)
    
  • 相关阅读:
    剑指 Offer 33. 二叉搜索树的后序遍历序列
    剑指 Offer 32
    OCR技术浅析-tesserOCR(3)
    OCR技术浅析-自写篇(2)
    OCR技术浅析-无代码篇(1)
    SVN服务器+客户端安装和配置
    Git命令集
    数组模拟队列与单调队列求解滑动窗口
    upper_bound与lower_bound
    图中连通块的划分
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/13380548.html
Copyright © 2011-2022 走看看