Jianghc's Blog

Back

写在最前面的#

最近因为统计计算课程需要写GMM下的相关算法用于参数估计,涉及到很多矩阵相关的运算,考虑到后续可能在深度学习中也会应用,在这里记录下来,希望后面对写python的时候有帮助,持续更新!

乘法操作#

网上找到一个不涉及广播机制操作的例子

运算用例.dot().multiply().matmul@*
向量[0,1],[1,2]2[0,2]22[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]])

总结

  1. 对于向量/多维数组
    • multiply()与*作用相同,为对应位置元素相乘(若 w 为 m * 1 的矩阵,x 为 m * n 的矩阵,那么通过点乘结果就会得到一个 m * n的矩阵; w的列数只能为 1与x的列数相等(即n),w的行数与x的行数相等才能进行乘法运算。)
    • dot()、matmul()、@作用相同,为求向量内积/矩阵乘法
  2. 对于矩阵(np.matrix)
    • *为做矩阵乘法,需要注意与多维数组的区别

对于matmul()的多维数组的用法,

sum和max的相关操作#

对于sum和max等操作,可以指定起比较的维度,以及进行求解后是否维度存在压缩。一个常见的命令如下:

self.z = self.z - np.max(self.z, axis=1, keepdims=True)
plaintext

axis=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))
plaintext

tqdm 库#

包含进度条美化的方法,深度学习中应该很常见。

切片操作#

  • 切片对应前闭后开,下标计数从左到右从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
python 使用总结-----Numpy篇
https://525511.xyz/blog/python-%E4%BD%BF%E7%94%A8%E6%80%BB%E7%BB%93-numpy%E7%AF%87
Author Haochen Jiang
Published at January 5, 2023
Comment seems to stuck. Try to refresh?✨