• Numpy学习笔记(一)


    numpy介绍

      numpy属于python的一个数学库,相比于Python做数值计算速度更快.也可以使用numpy进行向量和矩阵计算.

    1.ndarrays数据类型的创建

    import numpy as np
    
    # 索引以0开始
    a = np.array([0, 1, 2, 3, 4])
    b = np.array((0, 1, 2, 3, 4))

    # 创建生成的序列 c
    = np.arange( 10, 30, 5 ) # 10 到 30 的数值,不包含30,递增为5
    # 产生均匀分布的值构成的数组
    d = np.linspace(0, 2*np.pi, 5) # 在 0--2*np.pi 之间均匀选取5个数值
    # 生成占位符
    e = np.zeros((3,4))  # 生成3*4的二维数组,每个元素都是0,默认是float64
    f = np.ones((3,4))   # 生成3*4的二维数组,每个元素都是1,默认是float64
    g = np.empty((3,4)) # 生成3*4的二维数组,每个元素都是随机产生呢过的,默认是float64 ,添加dtype参数设置元素类型

    # 生成随机数
    h = np.random.random((3,4)) # 生成3*4的二维随机数 print(a) print(b) print(c) print(d) # a, b, c, d 的类型是ndarrays,包括数组、矩阵、张量. # 矩阵的创建 # 索引以0开始 a = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33, 34, 35]]) print(a[2, 4]) # 输出 25 # 三维张量的创建 3*3*3 b = np.array([[ [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]]]) print(b[1, 1, 1]) # 输出 14

     2、ndarrays的切片

    a = np.array([[11, 12, 13, 14, 15, 41],
                  [16, 17, 18, 19, 20, 42],
                  [21, 22, 23, 24, 25, 43],
                  [26, 27, 28, 29, 30, 44],
                  [31, 32, 33, 34, 35, 45]])
    
    a[ : :-1]      # 一维逆置,二维行(第一维)逆置
    print(a[0, 1:4])    # 行下标为0,列下标1-4,第一行,第2,3,4个数值
    print(a[1:4, 0])    # 行下标为1-4,列下标为0,第2,3,4行,第1列数值
    print(a[::2, ::2])  # 行下标从0开始,以索引2为增量,列下标从0开始,以索引2为增量
    print(a[:, 1])      # 所有的行中的第二列,因此只是第二列。

    # 当提供比轴数更少的索引时,缺失的索引被认为是一个完整切片 :
    >>> b[-1]                                  # 相似于 b[-1,:],如果是多维,后面的轴数被认为是完整索引。
    array([40, 41, 42, 43])

    # 三个点( ... )表示产生完整索引元组所需的冒号,如果 x 是rank为的5数组(即,它具有5个轴),例如:
    • x[1,2,...] 等于 x[1,2,:,:,:]。    # 省略后面
    • x[...,3] 等效于 x[:,:,:,:,3]。    # 省略前面
    • x[4,...,5,:] 等效于 x[4,:,:,5,:]   # 省略中间

    备注:以逗号分割维度

    3、ndarrays的属性

    print(type(a))          # type()输出变量的类型,<class 'numpy.ndarray'>
    print(a.dtype)          # 输出a中元素的类型,int64
    print(a.size)           # 输出a中包含元素的个数,25
    print(a.shape)          # a的形状,每个维度具有的元素个数,2
    print(a.itemsize)       # 每个元素占用了多少个字节,8字节(64/8)
    print(a.ndim)           # a的维度是多少,2
    print(a.nbytes)         # a有多少个字节,8*25

     4、基础操作

    a = np.arange(25)   # 产生25个数值,0--24
    a = a.reshape((5, 5))   # 改成5*5的矩阵,如果不支持,报错:cannot reshape array of size × into shape (×,×)
    
    b = np.array([10, 62, 1, 14, 2,
                  56, 79, 2, 1, 45,
                  4, 92, 5, 55, 63,
                  43, 35, 6, 53, 24,
                  56, 3, 56, 44, 78])
    b = b.reshape((5, 5))
    a.sum()   # 所有元素求和
    print(a) print(b) print(a + b) # a和b对应元素相加 print(a - b) # a和b对应元素相减 print(a * b) # a和b对应元素相乘 print(a / b) # a和b对应元素相除(浮点数) print(a ** 2) # a中所有元素的2次方 print(a < b) # a和b对应元素做比较,结果为Boolean值 print(a > b) # a和b对应元素做比较,结果为Boolean值
    print(a.dot(b)) # a和b乘法,新矩阵第一个元素是,a的第一行和b的第一列对应元素相乘再相加,后面元素依次类推。

     5、迭代

    # for ... in ...       多维数组是相对于第一个轴完成的
    
    >>> for row in b:
    ...     print(row)        # 是对b第一轴的迭代,如果b是二维数组输出的是,每行数据.
    
    
    #  flat 属性       迭代每个元素
    
    >>> for element in b.flat:
    ...     print(element)     # 输出的是每个元素

      

  • 相关阅读:
    uva 12169 Disgruntled Judge
    uva 11582 Colossal Fibonacci Numbers!
    ACdream 1073
    ACdream 1061 郭式树
    《构建之法》读书笔记
    南阳oj 素数求和问题
    hdoj Problem-1007 A hard puzzle
    程序员不得不知的 Navicat 实用工具
    Beyond Compare怎么对比图片差异
    教您用Beyond Compare比较十六进制文件
  • 原文地址:https://www.cnblogs.com/smartmsl/p/10561820.html
Copyright © 2020-2023  润新知