Numpy矩阵

文章目录

  • 前言
  • 矩阵生成
    • 1.手动定义
    • 2.利用matlib.empty随机生成
    • 3. matlib zeros & matlib.ones
    • 4. matlib.eye
    • 5. matlib.identity
    • 6.matlib.rand
  • 矩阵操作
    • 矩阵与二维数组相互转换
    • 矩阵转置
    • 其他
  • 矩阵运算

前言

最近在学习线性几何,自然少不了矩阵运算。我是个人开发者,无法使用MatLab,所以我选择了Numpy作为计算工具。
首先导入numpy库

import numpy as np
import numpy.matlib

矩阵生成

1.手动定义

比如生成一个2x2的矩阵 [ 5 2 − 1 7 ] \begin{bmatrix}5&2\\-1&7\end{bmatrix} [5127]:

A = np.matrix([[5,2],[-1,7]])

2.利用matlib.empty随机生成

matlib.empty()定义如下:

numpy.matlib.empty(shape, dtype, order)
  • shape: 定义新矩阵形状的整数或整数元组
  • dtype:可选,数据类型
  • order: C (行序优先) 或者F (列序优先)
    比如随机生成一个2x2的矩阵:
A = np.matlib.empty((2,2))

3. matlib zeros & matlib.ones

  • numpy.matlib zeros()函数创建一个以0填充的矩阵。
  • numpy.matlib.ones()函数创建一 个以1填充的矩阵。

4. matlib.eye

定义如下:

A = numpy.matlib.eye(n, M, k, dtype)

numpy.matlib.eye函数返回一个矩阵,对角线元素为1,其他位置为零。

  • n: 返回矩阵的行数
  • M: 返回矩阵的列数,默认为n
  • k: 对角线的索引(偏移量)
  • dtype: 数据类型

5. matlib.identity

返回给定大小的单位矩阵。例如:

A = np.matlib.identity(4,dtype=int))

就是diag(1, 1, 1, 1)

6.matlib.rand

随机生成矩阵,和matlib.empty差不多,只是少了order

A = np.matlib.rand(4,4)

矩阵操作

矩阵与二维数组相互转换

arr=np.asarray(mat1)  #matrix to array
mat2=np.asmatrix(arr) #array to matrix

矩阵转置

x=np.matrix([[1,2,3],[4,5,6]])
print(x.T)

其他

print(x.mean())         #所有元素均值
print(x.mean(axis=0))   #纵向平均值
print(x.mean(axis=1))   #横向平均值
print(x.sum())          #所有元素之和
print(x.max(axis=1))    #横向最大值
print(x.argmax(axis=1)) #横向最大值下标
print(x.diagonal())     #对角线元素

矩阵运算

函数 用途说明
diag 将一维数组转化为矩阵的对角线 或 反之
dot 矩阵相乘
trace 对角线求和
det 计算矩阵行列式
eig 计算方阵的特征值和特征向量
inv 计算方阵的逆
svd 计算奇异值分解
solve 解线性方程组Ax=b
lstsq 计算Ax=b的最小二乘解

你可能感兴趣的:(Python,Mathematics,python,numpy,矩阵)