引力波数据探索:编程与分析实战训练营

第 2 部分 基于 Python 的数据分析基础

主讲老师:王赫

2023/12/01

ICTP-AP, UCAS

数据分析实训之 Numpy

  • Numpy 的理解与解读
    • Numpy 中的数据结构
    • Numpy 中的数据切片
    • Numpy 中的广播机制
    • Numpy 中的线性代数与数理统计

数据分析实训之 Numpy

# Numpy

Numpy 简介

  • Numpy运算速度快:
    • 它将常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环,放到C语言的运算中,明显地提高了程序的运算速度。
  • NumPy 是 Python 语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  • Numpy 中的数据结构:ndarray(即 n-dimensional array,多维数组)
  • Numpy 的 ndarray 与 Python 的 list:
    • list 列表本身是为了处理更广泛、更通用的目的而构建的
    • ndarray 对于处理数组类型结构的数据会更加方便
# Numpy

Numpy 简介

Numpy 要点:

  • 我们可以使用NumPy.array()在Python中创建一个N维数组。
  • 数组默认是同构的(Homogeneous),这意味着数组内的数据必须是相同的数据类型。(注意:你也可以创建一个结构化数组)
  • 支持逐元素(Element-wise)操作。
  • NumPy 数组具有各种函数、方法和变量,以简化矩阵计算任务。
  • 数组的元素在内存中是连续存储的。例如,二维数组的所有行必须具有相同数量的列。三维数组必须在每个轴上具有相同数量的行和列。
  • NumPy 是 Python 语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  • Numpy 中的数据结构:ndarray(即 n-dimensional array,多维数组)
# Numpy

Numpy 的理解与解读

  • NumPy 是 Python 语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  • Numpy 中的数据结构:ndarray(即 n-dimensional array,多维数组)

...

# Numpy

Numpy 的理解与解读

  • NumPy 是 Python 语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  • Numpy 中的数据结构:ndarray(即 n-dimensional array,多维数组)
  • ndarray 的关键属性有维度(ndim)、形状(shape)和数值类型(dtype)等
# 引入 numpy 模块
import numpy as np
np1 = np.array([1, 2, 3])
np2 = np.array([3, 4, 5])

# array相加
print(np1 + np2) # [4 6 8]

# 显示相关信息
print(np1.ndim, np1.shape, np1.dtype) # 1 (3,) int64 => 一维array, 三个元素, 数值类型

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

# 改变 array 的维度
np3 = np3.reshape([2, 3])
print(np3.ndim, np3.shape, np3.dtype) # 2 (2, 3) int64
# Numpy

Numpy 的理解与解读

  • NumPy 是 Python 语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  • Numpy 中的数据结构:ndarray(即 n-dimensional array,多维数组)
  • ndarray 的关键属性有维度(ndim)、形状(shape)和数值类型(dtype)等
# Numpy

Numpy 的理解与解读

  • NumPy 是 Python 语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  • Numpy 中的数据结构:ndarray(即 n-dimensional array,多维数组)
  • ndarray 的关键属性有维度(ndim)、形状(shape)和数值类型(dtype)等
  • ndarray 的切片
# Numpy

Numpy 的理解与解读

  • NumPy 是 Python 语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  • Numpy 中的数据结构:ndarray(即 n-dimensional array,多维数组)
  • ndarray 的关键属性有维度(ndim)、形状(shape)和数值类型(dtype)等
  • ndarray 的切片
# Numpy

Numpy 的理解与解读

  • NumPy 是 Python 语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  • Numpy 中的数据结构:ndarray(即 n-dimensional array,多维数组)
  • ndarray 的关键属性有维度(ndim)、形状(shape)和数值类型(dtype)等
  • ndarray 的切片
  • ndarray 里的 broadcasting(广播机制)

简单的说,对两个阵进行操作时,Numpy 逐元素地比较他们的形状。

只有两种情况下Numpy会认为两个矩阵(向右对齐后)内的两个对应维度是兼容的:

  1. 它们相等;
  2. 其中一个是1维。

举个牛逼的例子:

A      (4d array):  8 x 1 x 6 x 1
B      (3d array):      7 x 1 x 5
Result (4d array):  8 x 7 x 6 x 5

当任何一个维度是1,那么另一个不为1的维度将被用作最终结果的维度。也就是说,尺寸为1的维度将延展或“逐个复制”到与另一个维度匹配。

# Numpy

Numpy 的理解与解读

  • NumPy 是 Python 语言的一个扩展程序库。支持高阶大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  • Numpy 中的数据结构:ndarray(即 n-dimensional array,多维数组)
  • ndarray 的关键属性有维度(ndim)、形状(shape)和数值类型(dtype)等
  • ndarray 的切片
  • ndarray 里的 broadcasting(广播机制)
  • ndarray 线性代数与数理统计

argmax, argmin, argsort, corrcoef, dot, floor, inner, inv, lexsort, max, maximum, mean, median, min, minimum, nonzero, prod, re, round, sort, std, sum, trace, transpose, ...

第 2 部分 基于 Python 的数据分析基础(数据分析实训之 Numpy)

By He Wang

第 2 部分 基于 Python 的数据分析基础(数据分析实训之 Numpy)

引力波数据探索:编程与分析实战训练营。课程网址:https://github.com/iphysresearch/GWData-Bootcamp

  • 778