Numpy 基础1

1. 创建数组

  • 固定类型数组: 使用 Python 的 array 模块创建固定类型数组。

    1
    2
    3
    import array
    L = list(range(10))
    A = array.array('i', L)
  • 从列表创建数组: 使用 np.array 从 Python 列表创建 NumPy 数组。

    1
    2
    3
    import numpy as np
    a = np.array([3.0, 2, 5, 1.3])
    b = np.array([1, 2, 3, 4], dtype='float')
  • 嵌套列表构成多维数组:

    1
    c = np.array([range(i, i + 3) for i in [2, 4, 6]])

2. 从头创建数组

  • 全零数组: np.zeros 创建一个全零数组。

    1
    np.zeros(10, dtype=int)
  • 全一数组: np.ones 创建一个全一数组。

    1
    np.ones((3, 5))
  • 填充特定值的数组: np.full 创建一个数组并用特定值填充。

    1
    np.full((3, 5), 3.14)
  • 线性序列数组: np.arange 创建一个线性序列数组。

    1
    np.arange(0, 20, 2)
  • 随机数组: 使用 np.random 模块创建随机数组。

    1
    2
    3
    np.random.random((3, 3))
    np.random.uniform(5, 7, (2, 2))
    np.random.randint(5, 7, (2, 2))
  • 单位矩阵: np.eye 创建一个单位矩阵。

    1
    np.eye(3)

3. 数组基础

  • 数组属性: 了解数组的维度、形状、大小、数据类型等属性。

    1
    x3.ndim, x3.shape, x3.size, x3.dtype, x3.itemsize, x3.nbytes
  • 数组索引和切片: 使用索引和切片访问和修改数组元素。

    1
    x1[0], x1[-1], x3[2][2][0]
  • 数组变形: 使用 reshapenp.newaxis 改变数组形状。

    1
    grid_reshape = np.arange(1, 10).reshape(3, 3)

4. 数组的拼接和分裂

  • 数组拼接: 使用 np.concatenate, np.vstack, np.hstack 拼接数组。

    1
    2
    3
    np.concatenate([x, y, z])
    np.vstack([x, y, z, grid])
    np.hstack([grid, grid])
  • 数组分裂: 使用 np.split, np.vsplit, np.hsplit 分裂数组。

    1
    2
    x1, x2, x3 = np.split(x, [3, 5])
    upper, lower = np.vsplit(grid, [2])

5. 通用函数

  • 数学运算: 使用通用函数进行数组的加减乘除等运算。

    1
    np.add(x, 5), np.multiply(x, 2)
  • 三角函数和指数对数: 使用 np.sin, np.cos, np.exp, np.log 等函数。

    1
    np.sin(theta), np.exp(x), np.log(x)
  • 高级特性: 使用 reduce, accumulate, outer 等高级特性进行聚合和外积计算。

    1
    np.add.reduce(x), np.multiply.outer(x, x)

这些操作和概念是 NumPy 中最常用的部分,掌握它们可以帮助你在数据分析和科学计算中更高效地使用 NumPy。

Lab1

  •       import numpy as np
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    - Q1:创建数列

    -

    - 利用arange函数,创建数组值从1开始到19结束(不包含19),步长为1,保存为a

    - 再创建一个从19到49结束(不包含49),步长为1,保存为b


    ​ In [3]:



    a = np.arange(1, 19, 1) b = np.arange(19, 49, 1)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    - [Q2: 对数列形变 ]

    - ​

    - 利用reshape函数,将a形变为3×6的数组,保存为A

    - 将b形变为5×6的数组,保存为B


    In [4]:



    A = a.reshape(3, 6) B = b.reshape(5, 6)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    - [Q3:数组拼接与分裂 ]

    - 利用vstack将A和B数组进行垂直方向拼接,保存为C数组

    - 利用split对C数组在第2行分裂成两部分,将下半部分保存为D


    ​ In [5]:



    C = np.vstack((A, B)) D = np.split(C, [2])[1]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    - Q4:切片与索引


    对D提取第1行所有元素,保存为E

    ​ In [6]:



    E = D[0,:]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    - Q5:数组计算


    利用multiply.accumulate对E中所有元素依次求积,并保留最后一项作为E中的累计积保存为a1

    ​ In [11]:



    a1 = np.multiply.accumulate(E)[-1] print('a1的值为:',a1)
    1

    a1的值为: 13366080