import numpy as np
from numpy import * #numpy的所以模块引入当前的命令空间
eye(4) #产生4*4的单位矩阵
a.I #求逆
a.T #求转置
a.H #求共轭
矩阵的生成
Numpy数据库中存在两种数据类型(矩阵matrix 和 数组array)
matrix函数
函数描述:把括号中的数组转换为矩阵 |
np.matrix(a)把括号中的数组转换为矩阵
注:matrix()和 array ()函数都可以通过对象后面加上 .T 得到其转置。 matrix()还可以在后面加 .H 得到共轭矩阵, 加 .I 得到逆矩阵, array()就不可以 |
mat函数
(1)、np.mat(b)将括号中的数组b转化为矩阵
(2)、mat()函数生成矩阵中数据可以为字符串以分号(;)分割,或者为列表形式以逗号(,)分割
a=numpy.mat('1,2;3,4')
b=numpy.mat([[1,2],[3,4]])#列表形式以逗号作为分割
array()函数
d=numpy.array([1,2,3,4])
print(type(d))
#结果为:
# <class 'numpy.ndarray'>
#所以使用array()函数产生的不是矩阵格式
array()函数生成矩阵时数据只能为列表形式
而且--array()函数的乘法(*)是矩阵元素所对应位置的两个数进行相乘!若想让之遵循矩阵乘法规则可以使用dot()函数
总结:(1)、array()函数的相乘中:*代表点乘(对应元素相乘),dot()代表矩阵乘积。 mat()函数的乘法中:*代表矩阵乘,multiply()代表点乘 |
二、矩阵的运算函数
dot函数
函数描述:对于秩为1的数组,执行对应位置相乘,然后再相加; 对于秩不为1的二维数组,执行矩阵乘法运算; |
dot函数是np中的矩阵乘法函数,x.dot(y) 等价于 np.dot(x,y)
multiply函数
函数描述:数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致 |
numpy.multiply(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj]) = <ufunc 'multiply'>
星号(*)乘法运算
作用描述:作用对象为数组时——对应位置相乘 作用对象为矩阵时——执行矩阵乘法 |
求最值max()与maximum()函数
np.max:(a, axis=None, out=None, keepdims=False) 最少输入一个参数 axis默认为0(0:列向 1:行向) 作用:求序列的最值 |
np.maximum:(X, Y, out=None) 至少输入两个参数 作用:X和Y逐位比较去其大值 |
>> np.max([-2, -1, 0, 1, 2])
2
>> np.maximum([-2, -1, 0, 1, 2], 0)
array([0, 0, 0, 1, 2])
# 当然 np.maximum 接受的两个参数,也可以大小一致
# 或者更为准确地说,第二个参数只是一个单独的值时,其实是用到了维度的 broadcast 机制;
其他运算函数
np.exp(v)---e的v次方
np.log()---求对数
np.abs()---求绝对值
np.random.randn(5)生成5个高斯随机数变量,类型为一维数组 np.random.randn(5,1) 生成的为5行1列的矩阵 |
np.outr()---倍数运算
函数作用:第一个参数表示倍数,使得第二个向量每次变为几倍。
import numpy as np
x1 = [1,2,3]
x2 = [4,5,6]
outer = np.outer(x1,x2)
#结果显示
[[ 4 5 6] #1倍
[ 8 10 12] #2倍
[12 15 18]] #3倍