python常用框架工具之numpy——华为AI学习笔记9
它在数组和矩阵操作上都非常方便,是开源的数值计算库
1. numpy介绍
-
numpy是用C语言实现的,做了并行处理,比python的列表直接计算数组要快很多
-
numpy有很多计算函数,包括线性变换、傅里叶变换、随机模块等
2. 数组
2.1. 优势
相比列表的优势
-
减少编程量,因为已经进行了数组封装和优化
-
运算效率,并行计算,C语言实现
-
占用内存比较小
2.2. ndarray对象——numpy数组
数组的元素,类型必须统一,避免类型检查,提高速度
序号从0开始
2.3. 数组的创建
1.2.3.1. np.array(list)
a = np.array([1, 2, 3, 4, 5, 6])
b = np.array([[1, 2, 3], [4, 5, 6]])
np.array([[[3,5,6], [3,5,6]],[[4,5,7], [3,5,8]]])
2.3.2. 全零数组
c = np.zeros([2, 2])
2.3.3. 全1数组
np.ones()
2.3.4. 等间距数组
np.arange(10, 20, 2)
np.linspace(0, 100, 10)
2.4. 数组的类型
bool_
int_
intc
intp
int8
int16
int32
int64
unit8
float
float16
float32
float64
complex_
complex64
complex128
unit16
unit32
unit64
2.5. 切片与索引
2.5.1 一维数组
a = np.arrange(10)
索引:s = a[1], s = 1
切片:s = a[0:5], s = array([0,1,2,3,4])
步长切片:s = a[0:5:2], s = array([0, 2, 4]);s = slice(0, 5, 2), a[s] = array([0, 2, 4])
下标可以用负数
2.5.2. 二维数组
a = np.array([[0, 1, 2], [1, 2, 3], [2, 3, 4]])
a =
0 | 1 | 2 |
---|---|---|
1 | 2 | 3 |
2 | 3 | 4 |
a[:2, 1:] =
1 | 2 | |
---|---|---|
2 | 3 | |
a[2] = a[2, :] = a[2:, :] =
2 | 3 | 4 |
a[1, :2] = a[1:2, :2] =
1 | 2 | |
2.5.3. 条件判断
2.6. 广播
对不同形状的数组,对较小的数组进行拓展,与较大数组进行匹配
np.array([1, 2, 3]) + np.array([5]) = array([6, 7, 8])
np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]]) + np.array([0, 1, 2]) = array([[1, 2, 3], [1, 2, 3], [1, 2, 3]])
np.array([[0], [1], [2]]) + np.array([0, 1, 2]) = array([[0, 1, 2], [1, 2, 3], [2, 3, 4]])
2.7. 常用方法
np.reshape():定义形状
np.flat:展开成一维数组,必须用下标引用
np.trnspose():转置,可以指定某一行或某一列的数据进行翻转
对于二维数组来说很好理解,但对于多维数组来说则不好理解,有机会再做展开。
np.stack():拼接
np.insert():指定位置插入
np.delete():删除后返回新的数组
3. 矩阵
Numpy Matrix库
import numpy.matlib
np.matlib.empty():返回未初始化的新矩阵,无意义的数值
np.matlib.zeros():返回全0矩阵
np.matlib.ones():返回全1矩阵
np.matlib.eye():返回单位矩阵
np.matlib.identity():返回单位矩阵
np.matlib.rand():返回指定的随机数填充的矩阵
4. 数组转矩阵
a = np.array([1, 2, 3])
b = np.mat(a)
c = np.matrix(a)
如果a本身就是矩阵,b指向a,不新建,c一定是新建的
matrix b = matrix c = [[1 2 3]]
5. numpy中的运算
5.1. 矩阵相乘
a = np.mat([[1], [2], [3]])
b = np.mat([[1, 2, 3]])
c = a * b
d = np.dot(a, b)
c = d = matrix([[1 2 3] [2 4 6] [3 6 9]])
5.2. 元素相乘
c = np.multipy(a, b)
c = matrix([[1 4 9]])
c = a * 2
c = matrix([[2 4 6]])
5.3. 求逆和转置
6. 随机模块及常用方法
np.random.rand(size):输出给定形状,范围在[0, 1)的随机数
np.random.randn([size]):输出在服从标准正态分布的随机数
np.random.randint(low[, high, size]):输出在[low, high)范围的整数
np.random.random(size):范围在[0, 1)的随机数
np.random.beta(a, b [, size]):贝塔分布
np.random.lognormal([mean, sigma, size]):对数正态分布
np.random.normal([loc, scale, size]):正态分布
np.random.poisson([lam, size]):泊松分布
np.random.uniform([low, high, size]):均匀分布
7. 常用函数
7.1. 算术函数
三角函数:np.sin(), np.cos(), np.tan()
舍入函数:np.around(), np.floor(), np.ceil()
加减乘除:np.add(), np.subtract(), np.multipy(), np.divide()
余数:np.mod()
平方、乘方和方根:np.square(), np.pow(), np.sqrt()
7.2. 统计函数
最大最小值:np.amin(), np.amax()
中位数:np.median()
算术平均:np.mean()
加权平均:np.average()
标准差、方差:np.std(), np.var()
- 点赞
- 收藏
- 关注作者
评论(0)