Numpy小抄

Posted by AH on June 21, 2020

这几天在赶工大作业,用到一些Numpy操作。年纪大了记性不好,总是查了忘忘了查,气死我了——打个小抄吧

基本操作

  1. 矩阵乘法:np.matmul(A, B) OR np.dot(A, B) OR A@B

    其中matmul和dot在二维矩阵相乘情况下是一样的,高维矩阵相乘会不一样(暂时用不上就没研究)

    @是matmul的简便写法,在A和B都是np矩阵的情况下是一样的,但如果A和B是普通的list,matmul可以正常使用,@却不能

  2. 生成全零/全一矩阵:np.zeros(shape)和np.ones(shape)

  3. 单位阵:np.identity(n) OR np.eye(n, [m], [k])

    区别:identity只能生成单位方阵。eye生成的是对角线为1的矩阵,m和k都是可选参数,默认m=n,那就和identity没区别,k默认是0,控制的是对角线的位置

    再具体点可以看👉https://blog.csdn.net/m0_37393514/article/details/81455915

  4. 排序:np.sort(A)

  5. 排序,返回索引:np.argsort(A)

其它操作

  1. np.array_split(arr, m):可以把arr这个数组不均等分割成m个小数组。返回值是一个list,里面共m个元素,每个都是分割出的小数组

  2. np.where(),分两种情况(参考的是https://www.cnblogs.com/massquantity/p/8908859.html)

    • np.where(condition):返回满足condition的坐标(是坐标!)
    • np.where(condition, x, y):满足condition对应位置为x,不满足condition对应位置为y
  3. 统计矩阵A每一行非负元素的个数

    先来个判断是不是非负元素的矩阵:exist = (A>=0)

    再来个数个数的数组:factor = np.ones(exist.shape[1])

    乘一下就是结果了!

    exist = (A>=0)
    factor = np.ones(exist.shape[1])
    row_cnt = np.matmul(exist, factor)