美文网首页
numpy基本操作手册

numpy基本操作手册

作者: 张小张x86 | 来源:发表于2019-04-19 15:52 被阅读0次

    numpy优点

    • ndarray(高性能数组)
    • 用于对整数数组进行快速运算的标准数学函数
    • 线性代数、随机数生成,统计分析等接口

    ndarray

    • array创建
    data = [1,3,7,8]
    arr = np.array(data)
    data1 =[ [1,3,7,8],[9,7,5,3]]
    arr1 = np.array(data1)
    print(arr)
    print(arr1)
    >>>[1 3 7 8]
    >>>[[1 3 7 8] [9 7 5 3]]
    
    • asarray方法创建
    arr3 = np.asarray([3,4,5])
    print(arr3)
    >>>[3 4 5]
    

    区别:array创建是对原始数据的一份拷贝,asarray则是指向原始对象

    • 创建一个全零数组
    arr0 = np.zeros(4)
    arr1 = np.zeros((2,3))
    print(arr0)
    print(arr1)
    >>>[0. 0. 0. 0.]
    >>>[[0. 0. 0.] [0. 0. 0.]]
    
    • 创建一个全1数组
    ones1 = np.ones(4)
    ones2 = np.ones((2,3))
    print(ones1)
    print(ones2)
    >>>[1. 1. 1. 1.]
    >>>[[1. 1. 1.] [1. 1. 1.]]
    
    • 创建一个没有任何值的数组
    np.empty((3,4))
    
    • 创建一个单位矩阵
    e = np.eye(3)
    print(e)
    >>>[[1. 0. 0.]
        [0. 1. 0.]
        [0. 0. 1.]]
    
    • 矩阵形状
    e = np.eye(3)
    shape = e.shape
    print(shape)
    >>>(3, 3)
    

    ndarray与标量之间的计数

    • ndarray与常量计算
    arr = np.asarray([[200,0,0],[0,0,0]])
    arr1 = arr+3
    print(arr1)
    >>>[[203   3   3]
        [3   3   3]]
    arr2 = arr*1.2
    print(arr2)
    >>>[[240.   0.   0.]
       [0.   0.   0.]]
    
    • ndarray之间计算
    arr = np.asarray([[200,0,0],[0,0,0]])
    arr1 = np.asarray([[2,1,4],[1,7,9]])
    arr2 = arr*arr1
    print(arr2)
    arr3 = arr + arr1
    print(arr3)
    arr4 = np.add(arr,arr1)
    print(arr4)
    >>>[[400   0   0]
        [0   0   0]]
    >>>[[202   1   4]
        [1   7   9]]
    >>>[[202   1   4]
        [1   7   9]]
    
    • 数组索引
    arr = np.asarray([[200,0,0],[0,0,0]])
    print(arr[0])
    >>>[200   0   0]
    
    • 数组切片
    a= [1,2,3,4,5,6]
    print(a[2:4])
    >>>[3, 4]
    
    b = [[1,3,5,7,9],[2,4,6,8,0]]
    print(b[0][0:3])
    >>>[1, 3, 5]
    
    b = [[1,3,5,7,9],[2,4,6,8,0],[3,4,5,6,7]]
    print(b[0:1,:])
    >>>[[1, 3, 5, 7, 9]]
    
    • 花式索引
    arr = np.empty((8,4))
    for i in range(8):
        arr[i] = i
    print(arr)
    #以某种特定顺序选取行子集,只需要传入一个用于指定行顺序的整数数组或ndarray
    print(arr[[3,5,1,6]])
    >>>
    [[0. 0. 0. 0.]
     [1. 1. 1. 1.]
     [2. 2. 2. 2.]
     [3. 3. 3. 3.]
     [4. 4. 4. 4.]
     [5. 5. 5. 5.]
     [6. 6. 6. 6.]
     [7. 7. 7. 7.]]
    >>>
    [[3. 3. 3. 3.]
     [5. 5. 5. 5.]
     [1. 1. 1. 1.]
     [6. 6. 6. 6.]]
    
    arr = np.arange(32).reshape((8,4))
    print(arr)
    >>>
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]
     [12 13 14 15]
     [16 17 18 19]
     [20 21 22 23]
     [24 25 26 27]
     [28 29 30 31]]
    #数组索引
    #同时传入一个二维数组
    #数组索引第一个元素为一个数组,代表行的序号,数组索引第二个元素为一个数组,表示列的序号
    print(arr[[1,5,7,2],[0,3,1,2]])
    >>>[ 4 23 29 10]
    #数组索引第一个元素为一个数组,表示行的序号,第二个索引为一个切片,表示一个列的切片
    print(arr[[1,5,7],0:3])
    >>>
    [[ 4  5  6]
     [20 21 22]
     [28 29 30]]
    #选取4行,所有列,修改列顺序
    print(arr[[1,5,7,2]][:,[3,2,1,0]])
    >>>
    [[ 7  6  5  4]
     [23 22 21 20]
     [31 30 29 28]
     [11 10  9  8]]
    print(arr[np.ix_([1,5,7,2],[0,2,1,3])])
    >>>
    [[ 4  6  5  7]
     [20 22 21 23]
     [28 30 29 31]
     [ 8 10  9 11]]
    

    numpy常用函数

    对数组进行元素级的运算函数

    • 指数函数 exp()
    arr = np.arange(16).reshape((4,4))
    print(arr)
    arr1 = np.exp(arr)
    print(arr1)
    
    • 绝对值 abs()
    • 平方 square()
    • 开根号 sqrt()

    数学统计方法

    • 计算均值 mean()
    arr = np.arange(16).reshape((4,4))
    print(arr.mean())
    >>>7.5
    print(np.mean(arr))
    >>>7.5
    print(np.mean(arr,axis=0))
    >>>[6. 7. 8. 9.]
    print(np.mean(arr,axis=1))
    >>>[ 1.5  5.5  9.5 13.5]
    
    • 数组或某轴上的元素求和 sum()
    • 标准差和方差 std() var()
    • 最小值和最大值 min() max()
    • 最小值和最大值的索引 argmin() argmax()
    • 所有元素的累计和 cumsum()
    • 所有元素的累积 cumprod()

    线性代数

    • 矩阵相乘 dot()
    x = np.array([[1,2,3],[4,5,6]])
    y = np.array([[6,20],[-1,3],[9,8]])
    z = np.dot(x,y)
    print(z)
    >>>
    [[ 31  50]
     [ 73 143]]
    

    标准线性代数运算函数 numpy.linalg

    • 矩阵的逆矩阵 linalg.inv()
    X = np.random.rand(5,5)
    print(X)
    inv_X = np.linalg.inv(X)
    print(inv_X)
    
    • 转置矩阵 X.T
    • diag 以一维数组的形式返回方阵的对角线元素,或者将一维数组转化为方阵
    • dot 矩阵乘法
    • trace 计算对角线元素的和
    • det 计算矩阵行列式
    • eig 计算方阵的本征值和本征向量
    • inv 计算方阵的逆
    • pinv 计算矩阵的Moore-Penrose伪逆
    • qr 计算QR分解
    • svd 计算奇异值分解
    • solve 解线性方程组Ax = b
    • lstsq 计算Ax = b的最小二乘解

    随机数生成 numpy.random

    • 高斯分布
      np.random.normal(size = (4,4))
    • seed 确定随机数生成器的种子
    • permutation 返回一个序列的随机排列
    • shuffle 对一个序列随机排列
    • rand 产生均匀分布样本值
    • randint 给定的上下限范围,随机选取整数
    • randn 产生正态分布数值
    • binomial 产生二项分布数值
    • normal 产生高斯分布
    • beta 产生beta分布

    相关文章

      网友评论

          本文标题:numpy基本操作手册

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