python 使用总结-----Numpy篇
Write your description here.
views
| comments
写在最前面的#
最近因为统计计算课程需要写GMM下的相关算法用于参数估计,涉及到很多矩阵相关的运算,考虑到后续可能在深度学习中也会应用,在这里记录下来,希望后面对写python的时候有帮助,持续更新!
乘法操作#
网上找到一个不涉及广播机制操作的例子
| 运算 | 用例 | .dot() | .multiply() | .matmul | @ | * |
|---|---|---|---|---|---|---|
| 向量 | [0,1],[1,2] | 2 | [0,2] | 2 | 2 | [0,2] |
| 多维数组(np.array) | ([[0,1],[2,3]]), ([[2,3],[4,5]]) | ([[4,5],[16,21]]) | ([[0,3],[8,15]]) | ([[4,5],[16,21]]) | ([[4,5],[16,21]]) | ([[0,3],[8,15]]) |
| 矩阵(np.matrix) | 同上 | 同上 | 同上 | 同上 | 同上 | ([[4,5],[16,21]]) |
总结
- 对于向量/多维数组
- multiply()与*作用相同,为对应位置元素相乘(若 w 为 m * 1 的矩阵,x 为 m * n 的矩阵,那么通过点乘结果就会得到一个 m * n的矩阵; w的列数只能为 1 或 与x的列数相等(即n),w的行数与x的行数相等才能进行乘法运算。)
- dot()、
matmul()、@作用相同,为求向量内积/矩阵乘法
- 对于矩阵(np.matrix)
- *为做矩阵乘法,需要注意与多维数组的区别
对于matmul()的多维数组的用法,
sum和max的相关操作#
对于sum和max等操作,可以指定起比较的维度,以及进行求解后是否维度存在压缩。一个常见的命令如下:
self.z = self.z - np.max(self.z, axis=1, keepdims=True)plaintextaxis=0为对行进行操作(返回的维度和列的维度相同),axis=1为对列进行操作(返回的维度和行的维度相同),keepdims=True为保持原来的维度不变.
又例如归一化操作:
norm_pca_feature = (pca_feature[:,:] - np.min(pca_feature[:,:], axis=0))/(np.max(pca_feature[:,:], axis=0)-np.min(pca_feature[:,:], axis=0))
plaintexttqdm 库#
包含进度条美化的方法,深度学习中应该很常见。
切片操作#
- 切片对应前闭后开,下标计数从左到右从0递增,从右到左从-1递减,步长如果为-1则采取逆序的操作
- [:-1]去掉最后一列 [-1:]取出最后一列
s[-1:] 相当于 s[-1:6] 表示序列 s 的第 -1 个元素,也即最后一个元素
s[:-1] 相当于 s[0:-1],表示序列 s 自始至最后一个元素前的所有元素
s[::-1] 相当于 s[-1:-7:-1],表示序列 s 自尾而首的所有元素,即倒序
s[::-2] 表示倒序,步长为2
s[2::-1] 表示自第 2 个元素始倒序plaintext