zoukankan      html  css  js  c++  java
  • Numpy学习50例

    基础部分

    1、导入numpy模块

    import numpy as np
    

    2、查看numpy版本信息

    print(np.__version__)
    

    numpy的主要对象的多维数组Ndarray。Numpy中维度(dimensions)叫做轴(axis),轴的个数叫做秩。

    3、通过列表创建一位数组

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

    4、通过列表创建一个二维数组

    np.array([(1, 2, 3),(4, 5, 6)])
    

    5、创建全为0的二维数组

    np.zeros((3,3))
    

    6、创建全为1的三维数组

    np.ones((2,3,4))
    

    7、创建一维等差数组

    np.arange(5)
    

    8、创建二维等差数组

    np.arange(6).reshape(2,3)
    

    9、创建二维单位矩阵

    np.eye(3)
    

    10、创建等间隔一维数组(1到10之间,共6个数,数字之间间隔相同)

    np.linspace(1, 10, num=6)
    

    11、创建二维随机数组

    np.random.rand(2,3)
    

    下面说明一下random模块中的一些常用函数的用法

    • numpy.random.rand(d0, d1, ..., dn):生成一个[0,1)之间的随机浮点数或N维浮点数组。
    • numpy.random.randn(d0, d1, ..., dn):生成一个浮点数或N维浮点数组,取数范围:正态分布的随机样本数。
    • numpy.random.randint(low, high=None, size=None, dtype='l'):生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。
    • numpy.random.seed():使得随机数据可预测。当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数

    12、依据自定义函数创建数组

    np.fromfunction(lambda i, j: i +j, (5, 6))
    fromfunction()方法可以根据矩阵的行号列号生成矩阵的元素。 例如创建一个矩阵,矩阵中的每个元素都为行号和列号的和。
    import numpy as np
    

    def func(i,j):
    return i+j
    a = np.fromfunction(func,(5,6))
    第一个参数为指定函数,第二个参数为列表list或元组tuple,说明矩阵的大小
    print(a)
    输出:[[ 0. 1. 2. 3. 4. 5.]
    [ 1. 2. 3. 4. 5. 6.]
    [ 2. 3. 4. 5. 6. 7.]
    [ 3. 4. 5. 6. 7. 8.]
    [ 4. 5. 6. 7. 8. 9.]]
    注意这里行号的列号都是从0开始的,func传进去的实参是矩阵的行列号

    13、矩阵乘法运算

    np.dot(A, B)
    

    14、使用np.mat将数组定义为矩阵,直接使用*进行矩阵乘法运算

    np.mat(A) * np.mat(B)
    

    15、矩阵的转置

    A.T
    

    16、矩阵求逆

    np.linalg.inv(A)
    

    17、常用数学函数计算

    np.sin(a)
    np.exp(a)
    np.sqrt(a)  #开平方运算
    np.power(a, 3)  #立方根运算
    

    18、数组的切片和索引

    a = np.array([1, 2, 3, 4, 5])
    a[0], a[-1]
    a[0:2], a[:-1]
    

    19、更改数组的形状(不改变原始数组)

    a.reshape(2,3)
    

    20、更改数组形状(改变原始数组)

    a.resize(2, 3)
    

    21、展平数组(将多维变成一维)

    a.ravel()       a.flatten()
    numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩;而numpy.ravel()返回的是视图(view),会影响(reflects)原始矩阵。
    

    22、垂直拼合数组

    np.vstack((a, b))
    

    23、水平拼合数组

    np.hstack((a, b))
    

    24、沿轴分隔数组

    np.hsplit(a, 3)  #沿横轴切分数组。a是ndarray数组,3表示切分为几份
    np.vsplit(a,2)  #沿纵轴切分数组。
    

    25、返回数组最值

    np.min(a, axis=num)
    np.max(a, axis=num)
    
    np.argmax(a, axis=num)  #返回最大值的索引
    np.argmin(a, axis=num)
    

    26、数组的统计特性计算

    np.median(a, axis=num)  #指定维度的中位数
    np.mean(a, axis= num)  #算数平均值
    np.average(a, axis= num)  #加权平均值
    np.var(a, axis = num)  #方差
    np.std(a, sxis = num)  #标准差
    

    进阶部分

    27、创建一个5*5的二维数组,其中边界值为1,其余值为0

    arr = np.ones((5,5))  #方法1
    arr[1:-1,1:-1] = 0
    z
    
    arr = np.ones((5,5))  #方法二
    arr = np.pad(arr, pad_width=1, mode='constant', constant_values=0)
    

    28、创建5*5的二维数组,并设置1,2 ,3 ,4落在其对角线下方

    arr = np.diag(1+np.arange(4), k = -1)
    

    29、创建一个0-10的一维数组。并将大于等于5的数置为0

    arr1 = np.random.randint(0,10,10)
    arr1[arr1 >= 5] = 0
    

    29、找出两个一维数组中子相同的元素

     arr1 = np.random.randint(0,10,10)
     arr2 = np.random.randint(0,10,10)
    np.intersect1d(arr1,arr2)
    

    30、打印今天、昨天、明天

    yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
    today     = np.datetime64('today', 'D')
    tomorrow  = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
    print("yesterday: ", yesterday)
    print("today: ", today)
    print("tomorrow: ", tomorrow)
    

    31、将数组排序

    Z = np.random.random(10)
    Z.sort()
    

    32、将float32转化为整型

    arr = np.arange(10, dtype = np.float32)
    arr = arr.astype(np.int32, copy = False)
    

    33、将随机二维数组按照第3列从上到下升序排列

    arr = np.random.randint(0, 10, (5,5))
    arr[arr[:,2].argsort()]
    

    34、将二维数组的前两行进行交换

    A = np.arange(25).reshape(5,5)
    A[[0,1]] = A[[1,0]]
    

    35、找出随机一维数组中出现频率最高的值

    arr = np.random.randint(0,10,50)
    np.bincount(arr).argmax()
    

    36、对于给定的5*5二维数组,在其内部随机放置num个值为1的数

    arr = np.zeros((5,5))
    np.put(arr, np.random.choice(range(5*5), p, replace=False), 1)
    

    37、获得二维数组点积结果的对角线数组

    A = np.random.uniform(0,1,(3,3))
    A = np.random.uniform(0,1,(3,3))
    np.sum(A*B.T,axis = 1)  #较快的方法
    np.diag(np.dot(A, B))  #较慢的方法
    

    38、设置数组中的各元素的值,使其保留两位小数

    np.set_printoptions(precision=2)
    

    39、计算两个数组之间的欧式距离

    np.linalg.norm(b-a)
  • 相关阅读:
    C#之枚举
    C#之判断字母大小、字母转ACII码
    C#之BF算法
    md5如何实现encodePassword加密方法
    基本配置及安全级别security-level
    js中“原生”map
    web.xml讲解
    java application指的是什么
    .conf、.bak是什么格式
    Maven系列--web.xml 配置详解
  • 原文地址:https://www.cnblogs.com/wemo/p/8900565.html
Copyright © 2011-2022 走看看