数据大清洗_矩阵的创建与运算

一、矩阵创建

使用 np.mat、np.asmatrix 创建矩阵
使用 np.bmat 来组合矩阵 常用

import numpy as np

# 生成矩阵
# 可以使用np.mat  np.asmatrix来创建矩阵
#np.mat = np.asmatrix 一样的
#np.mat 将特殊字符串转化为矩阵
# m1 = np.mat('1 2 3;4 5 6;7 8 9')
# print(m1)
# print(type(m1))  # <class 'numpy.matrixlib.defmatrix.matrix'>
# print(m1.ndim)  # 2维 ---只能是2维
# print(m1.shape)  # (3,3)
# print(m1.itemsize)
# print(m1.dtype)
# print(m1.size)
# print("********************")


# # 也可以将列表嵌套转化为矩阵
# m1 = np.asmatrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# print(m1)
# print(type(m1))  # <class 'numpy.matrixlib.defmatrix.matrix'>
#
#
# # 也可以将二维数组转化为矩阵
#
# # 创建一个二维数组
# arr = np.arange(9).reshape((3, 3))
#
# m1 = np.mat(arr)
#
# print(m1)
# print(type(m1))  # <class 'numpy.matrixlib.defmatrix.matrix'>


# 可以使用np.bmat来组合矩阵
arr1 = np.array([[1, 2], [1, 2]])
arr2 = np.arange(4).reshape((2, 2))
print('arr1:\n', arr1)
print('arr2:\n', arr2)
print('*' * 100)

# 利用np.bmat将数组组合成矩阵
# res = np.bmat('arr1 arr2;arr2 arr1')
# res = np.bmat([[arr1, arr2], [arr2, arr1]])  # 列表对象
# print(res)
# print(type(res))  # <class 'numpy.matrixlib.defmatrix.matrix'>

# 可以使用np.bmat 可以将 二维数组转化为矩阵
res = np.bmat(arr1)
# res = np.bmat('1 2 3;4 5 6;7 8 9')  # 错误的
# res = np.bmat([[1, 2, 3], [4, 5, 6], [7, 8, 9]])  # 错误的
print(res)
print(type(res))  # <class 'numpy.matrixlib.defmatrix.matrix'>

二、矩阵的运算

import numpy as np

# 创建矩阵进行运算
m1 = np.mat('1 2;3 4')  # ---(2,2)
m2 = np.asmatrix([[2, 1], [1, 2]])  # ----(2,2)
print('m1:\n', m1)
print('m2:\n', m2)
print('*' * 100)

# 矩阵相加 ---同型矩阵 ---对应位置相加
print('m1 + m2 :\n', m1 + m2)

# 矩阵相减---矩阵加上后面的矩阵的负矩阵 ---对应位置相减
print('m1 - m2 :\n', m1 - m2)


# 矩阵与 数的相乘 ----每一个元素都与数进行相乘
# 3 和 m1 进行相乘
# print('3 * m1 :\n', 3 * m1)

# # 矩阵 与矩阵 相乘
# # 规则:如果两个矩阵进行相乘,左矩阵的列 必须等于右矩阵的行,才能相乘
# # 生成一个左矩阵行、右矩阵列的矩阵
# print('m1 * m2:\n', m1 * m2)
# # np.matmul
# print('m1 * m2 :\n', np.matmul(m1, m2))
# # np.dot
# print('m1 * m2 :\n', np.dot(m1, m2))

# 矩阵对应位置元素相乘 ---同型矩阵
# print('m1、m2对应位置元素相乘:\n', np.multiply(m1, m2))

# 矩阵性质
# 矩阵转置
# print('m1 的转置:\n',m1.T)
# 矩阵的逆
# print('m1 的逆矩阵:\n', m1.I)
# # 逆矩阵性质---A*A的逆 = E   ----> |A| = 0 --->直接报错,或者出现inf
# print('m1 * m1 的逆矩阵:\n', m1 * m1.I)

# 矩阵的视图
# 可以通过np.mat np.asmatrix将ndarray转化为矩阵
# 可以通过矩阵.A 来获取 ndarray
# print('m1 的视图:\n', m1.A)
# print('m1 视图的类型:\n', type(m1.A))  # <class 'numpy.ndarray'>

# 索引---对于ndarray,使用下标会降低维度
# 对于矩阵 --使用下标 不降低维度
# print('获取m1的元素', m1[0, :])

# 矩阵的共轭转置
# 先共轭,再转置  ---复数
# print('m1的共轭转置:\n',m1.H)

矩阵特有属性:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值