这几天在赶工大作业,用到一些Numpy操作。年纪大了记性不好,总是查了忘忘了查,气死我了——打个小抄吧
基本操作
-
矩阵乘法:np.matmul(A, B) OR np.dot(A, B) OR A@B
其中matmul和dot在二维矩阵相乘情况下是一样的,高维矩阵相乘会不一样(暂时用不上就没研究)
@是matmul的简便写法,在A和B都是np矩阵的情况下是一样的,但如果A和B是普通的list,matmul可以正常使用,@却不能
-
生成全零/全一矩阵:np.zeros(shape)和np.ones(shape)
-
单位阵: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
-
排序:np.sort(A)
-
排序,返回索引:np.argsort(A)
其它操作
-
np.array_split(arr, m):可以把arr这个数组不均等分割成m个小数组。返回值是一个list,里面共m个元素,每个都是分割出的小数组
-
np.where(),分两种情况(参考的是https://www.cnblogs.com/massquantity/p/8908859.html)
- np.where(condition):返回满足condition的坐标(是坐标!)
- np.where(condition, x, y):满足condition对应位置为x,不满足condition对应位置为y
-
统计矩阵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)