Numpy 知识点总结

本文详细介绍了NumPy库中创建、修改和操作一维数组的方法,包括初始化数组、指定长度的零数组、空数组、填充数组以及各种范围的数组生成。还讲解了数组的索引、切片以及值的修改。此外,文章涵盖了数组的数学运算,如加减乘除,以及统计函数,如求和、求最小值等。同时,提到了随机数的生成,包括随机整数、随机浮点数和正态分布的随机数。最后,介绍了矩阵的排序和统计功能。
摘要由CSDN通过智能技术生成

一维数组(向量)

  1. 创建数组
  • a = np.array([1., 2., 3.])
    print(a)

    序号012
    结果1.2.3.
  1. 指定长度的并赋值0的数组
  • b = np.zeros(3, int)
    print(b)

    序号012
    结果0.0.0.
  1. 创建一个空数组,以大小和元素类型匹配现有数组
  • c = np.zeros_like(a)
    print©

    序号012
    结果0.0.0.
  1. 创建填充值的数组
  • print(np.ones(3))
    序号012
    结果1.1.1.
  • print(np.zeros(3))
    序号012
    结果0.0.0.
  • print(np.empty(3))
    序号012
    结果0.0.0.
  • print(np.full(3, 5.)
    序号012
    结果5.5.5.

有序数组

  1. arange(start, stop, step)
  • 传一个参数代表stop,如下:

  • print(np.arange(6))

    序号012345
    结果012345
  • 传两个参数代表start,stop,如下:

  • print(np.arange(2, 6))

    序号0123
    结果2345
  • 传三个参数代表start,stop,step,如下:

  • print(np.arange(1, 6, 2)

    序号012
    结果135
  1. linspace(start, stop, num)
  • print(np.linspace(0, 0.5, 6))
    序号012345
    结果0.0.10.20.30.40.5

随机数

  1. np.random.randint(start, stop, num)
  • 返回start~stop区间的num个随机整数,默认num是1
  • print(np.random.randint(0, 10, 3))
    序号012
    结果135
  1. np.random.rand(num)
  • 返回num个随机0~1的浮点数
    序号012
    结果0.688920970.664169650.63380222
  1. np.random.uniform(start, stop, num)
  • 返回start~stop区间的num个随机互不相同的数
  • print(np.random.uniform(1, 10, 3))
    序号012
    结果2.721108979.026629429.66096014
  1. np.random.randn(3)
  • 和np.random.rand相似,只是该函数生成的随机数符合标准正态分布μ=0,σ=1
  1. np.random.normal(5, 2, 3)
    符合正态分布μ=5,σ=2

数组索引(前闭后开)

  1. 取值
  • value = np.arange(1, 6)

  • print(value)

    序号01234
    结果12345
  • print(value [1])

    序号0
    结果1
  • print(value [2:4]) # 前闭后开,取2~4

    序号01
    结果34
  • print(value [-2:]) # 最后两个数

    序号01
    结果45
  • print(value [::2]) # 从0开始隔一个取一个

    序号012
    结果135
  • print(value [[1, 3, 4]] # 指定一个下标数组序列

    序号012
    结果245
  1. 修改值
  • value [2:4] = 0
  • print(value)
    序号01234
    结果12005

通过切片修改数组

  • 对比
    python listnumpy array
    pyList = [1, 2, 3]npArray = np.array([1, 2, 3])
    List1 = pyList # no copyArray1 = npArray # no copy
    List2 = pyList[:] # copyArray2 = npArray[:] # no copy
      List3 = pyList.copy() # copy  | Array3 = npArray.copy() # copy|
    

轴参数

  • 矩阵value
  • print(value)
    123
    456
  1. 整体求和
    r e s u l t = ∑ i j v a l u e i j result = \sum_{ij} value_{ij} result=ijvalueij
  • print(result)

    21

注:i (axis=0) ; j (axis=1)

  1. 按列求和
    r e s u l t = ∑ i v a l u e i j result = \sum_{i}value_{ij} result=ivalueij
  • print(value)
    579
  1. 按行求和
    r e s u l t = ∑ j v a l u e i j result = \sum_{j}value_{ij} result=jvalueij
  • print(result)
    6
    15

矩阵算术运算

  • value 为三行三列矩阵

    123
    456
    789
  • ‘/’

    • result = value / 3

    • print(result)

      0.333333330.666666671.
      1.333333331.666666672.
      2.333333332.666666673.
  • ‘/’

    • temp = np.array([[3], [6], [9]])

    • result = value / temp

    • print(result)

      0.333333330.666666671.
      0.666666670.833333331.
      0.777777780.888888891.
  • ‘*’

    • temp = np.array([-1, 0, 1])

    • result = value * temp

    • print(result)

      -103
      -406
      -709
  • ‘*’

    • value = np.array([1, 2, 3])

    • temp = np.array([[1], [2], [3]])

    • result = value * temp

    • print(result)

      123
      246
      369

矩阵统计

  1. 返回数值
  • min()
    value = [[4,8,5],
    [9,3,1]]
    print(value)

    485
    931

    r e s u l t = min ⁡ i j v a l u e i j result = \min_{ij}value_{ij} result=ijminvalueij

    • print(value.min())
    1
    • 按列取最小值
      r e s u l t j = min ⁡ i v a l u e i j result_{j} = \min_{i}value_{ij} resultj=iminvalueij
    • print(value.min(axis=0))
    431
    • 按行取最小值
      r e s u l t i = min ⁡ j v a l u e i j result_{i} = \min_{j}value_{ij} resulti=jminvalueij
    • print(value.min(axis=1))
      4
      1
  1. 返回索引,二维及更高版本中的argmin和argmax函数

    r e s u l t = a r g min ⁡ i , j v a l u e i j result = arg\min_{i,j}value_{ij} result=argi,jminvalueij

    • print(value.argmin())
      5

    注:np.unravel_index(value.argmin(). value.shape) == (1, 2)
    r e s u l t = a r g min ⁡ i v a l u e i j result = arg\min_{i}value_{ij} result=argiminvalueij

    • print(value.argmin(axis=0))
    011

    r e s u l t = a r g min ⁡ j v a l u e i j result = arg\min_{j}value_{ij} result=argjminvalueij

    • print(value.argmin(axis=1))
    0
    2
  2. 排序
    value = [[4, 8, 5],
    [9,3,1]]

    • print(value)
      485
      931
    • print(value.sort(axis=0)) # 按列排序
      431
      985
    • print(value.sort(axis=1)) # 按行排序
      458
      139
  3. 三维及以上

    • print(np.arange(1, 9).reshape(2, 2, 2))
      结果:
    [[[1 2]
    	[3 4]]
    
    	[[5 6]
    [7 8]]]
    
    • 表格

      12
      34
      56
      78
    • 堆叠效果图
      在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值