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

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

主讲老师:王赫

2023/12/01

ICTP-AP, UCAS

数据分析实训之 Numpy

关于上一讲的学员反馈

# Response
  • 授课主要面向的是国科大以引力波数据处理为主要研究方向的研究生和高年级本科生。
  • 不管“包学包会”,但会尽可能弥补和完善听课体验和授课内容。
  • (上次选做作业的问题)windows在搭载gpu的容器构建中碰到问题是nvidia的相关工具是仅在linux上搭载的,为此必须装wsl2,装完,整体搭载完之后碰到问题是是否需要在容器内再安装docker,(因为nvidia教程中包含docker命令)但是这有种双层嵌套的感觉,像是在wsl2中的container中的container
     
  • 能否别一节课时间太长,因为课业压力确实很重,只能分段学习……
  • 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, ...

# Pandas
# Homework

Homework

  1. 自己创建一个 GitHub 账户,fork 本课程的远程仓库后再 clone 到本地。
    $ git clone git@github.com:<你的github账户名>/GWData-Bootcamp.git













     
  2. 未来的编程作业将仅在 homework 分支上完成。你需要在你的本地仓库中新建目录 /GWData-Bootcamp/2023/homework/<你的名字>/;并最终把  homework 分支的作业 push 到你自己的关于本课程的远程仓库中,即: $ git push origin homework;最后,在GitHub上你的远程仓库中,在​​​​​​​ homework 分支下发起 Pull Request (PR) 至本课程远程仓库。
  3. 不要修改其他学员的作业目录和作业内容!
<你的github账户名>
不要勾选,可以把homework分支也一并fork

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

By He Wang

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

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

  • 279