Numpy 矩阵对象——《Python数据分析与应用》笔记

NumPy 中,对于多维数组的运算,默认情况下并不进行矩阵运算。如果需要对数组进行矩阵运算,可以调用响应的方法。

在 NumPy 中,矩阵是 ndarray 的子类。NumPy 提供了两个基本的对象:一个 N 维数组对象一个通用函数对象。其他对象都是在他们之上构建的。矩阵是继承自 NumPy 数组对象的二维数组对象。

矩阵的创建

这里将展示使用 matmatrixbmat 函数来创建矩阵

使用 mat 函数创建矩阵

mat 函数可以传入 matrixndarray 对象来创建矩阵,也可以通过传入用""包裹的用;分隔开的数据来创建矩阵

import numpy as np
matr1 = np.mat("1 2 3; 4 5 6; 7 8 9") # 使用分号隔开数据
print(matr1)  # 将生成一个3X3矩阵
matr2 = np.mat("1, 2, 3; 4, 5, 6; 7, 8, 9") # 这种方式也可以
print(matr2)

# 通过传入 ndarray 对象来创建矩阵
array = np.arange(12)
array = array.reshape(3, 4)
matr3 = np.mat(array)
print(matr3)

在这里插入图片描述
但是在传入的是 matrix 和 ndarray 对象时,mat 函数不会为其创建副本

array = np.arange(12)
array = array.reshape(3, 4)
print('初始的数组:\n', array)
matr1 = np.mat(array)
print('使用数组对象创建的矩阵:\n', matr1)
array[0, 0] = 99 # 改变数组中(0, 0)位置上的值
print('改变数组对象中的值之后,矩阵中相应位置的数据也会改变:\n',matr1)

在这里插入图片描述

使用 matrix 函数创建矩阵

matrix 函数传入的参数与 mat 函数一样,不同的是,matrix 会为传入的 ndarray 对象和 matrix 对象创建副本

matr1 = np.matrix("1, 2, 3; 4, 5, 6; 7, 8, 9")
print('matr1:\n', matr1)
matr2 = np.matrix(matr1)
print('通过matr1创建的matr2:\n', matr2)
matr1[0, 0] = 99
print('改变matr1只有,matr1:\n', matr1)
print('改变matr1只有,matr2:\n', matr2)

在这里插入图片描述

使用 bmat 函数创建矩阵

bmat 函数可以实现将多个小矩阵组合成一个大矩阵

A = np.mat('1 1; 1 1')
B = np.mat('2 2; 2 2')
C = np.mat('3 4; 5 6')
D = np.mat('7 8; 9 0')
print(np.bmat([[A, B], [C, D]]))
print(np.bmat('A, C; B, D'))
print(np.bmat('A D; C B'))

在这里插入图片描述

矩阵的运算

在 NumPy 中,矩阵的运算是针对矩阵中每个元素进行的:

matr1 = np.mat("1, 2, 3; 4, 5, 6; 7, 8, 9") # 创建矩阵
print('matr1:\n', matr1)
matr2 = matr1*3 # 矩阵中各个元素都乘3
print('matr2:\n', matr2)
# 矩阵中的加法,是两个矩阵对应位置元素的相加
print('matr1 + matr2:\n', matr1 + matr2)
# 矩阵相乘
print('matr1 * matr2:\n', matr1 *matr2)
# 矩阵对应元素相乘用multiply函数
print('矩阵对应元素相乘:\n', np.multiply(matr1, matr2))

在这里插入图片描述

矩阵属性

属性 说明
T 返回自身的转置
H 返回自身的共轭转置
I 返回自身的逆矩阵
A 返回自身数据的二维数组的一个视图(没有做任何的复制)

demo:

matr1 = np.mat("1, 2, 3; 4, 5, 6; 7, 8, 9")
print(matr1.T)
print(matr1.H)
发布了51 篇原创文章 · 获赞 33 · 访问量 9759
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览