numpy学习笔记
0. 前言
鉴于在卓越班暑期学习中,接触到机器学习的内容,索性深入研究一番,蹭一蹭机器学习的热度。
众所周知,学习机器学习之前,必须学习数据分析。而numpy
则是数据分析的第一道关。
numpy
的官网中,如此介绍:
NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
由此可见,numpy
是一个以数组为基础,包含各种骚操作和数学运算的框架。
1. 对比
俗话说,没有对比就没有伤害。numpy
为何这么优秀呢?先让我们了解一下原生python
的不足:
无法用广播的方式操作数组,例如:
1
2
3
4
5
6l = [1,2,3]
print(l*2) # 输出: [1, 2, 3, 1, 2, 3],而不是[2,4,6]
print(l+l) # 输出: [1, 2, 3, 1, 2, 3],而不是[2,4,6]
print(list(map(lambda x: x * 2, l))) # 才输出: [2,4,6]无法快速生成一个数组,如:
1
2print(range(1, 100, 2)) # 输出:range(1, 100, 2)
print(list(range(1, 100, 2))) # 才输出:[1,3...97,99]对于大量数据的相乘处理,速度很慢。
等等,详情见官网。
为什么numpy
运算速度很快呢,因为numpy
底层采用预编译的c
语言程序运行,比如数组相乘。
另外,numpy与matlab对比。
2. 入门
numpy
数组的核心是ndarray
对象。
2.1. 数组创建
1 | import numpy as np |
2.2. ndarray对象属性
1 | import numpy as np |
2.3. 基础运算
2.3.1. 简单运算
1 | import numpy as np |
2.3.2. 进阶数学运算
- 求和、最大值、最小值
1 | 4 ) a = np.arange( |
- 矩阵运算
1 | 1,1], A = np.array( [[ |
- 正弦、余弦、e^x、均值、标准差、开根
1 | 4 ) a = np.arange( |
2.4. 索引与切片
1 | import numpy as np |
2.5. 形状操控
1 | import numpy as np |
2.6. 合并
1 | 10*np.random.random((2,2))) a = np.floor( |
2.7. 转换
1 | import numpy as np |