Python可视化:NumPy通用函数(2)

it2025-02-06  7

NumPy通用函数

1. NumPy 矩阵1.1 矩阵的创建1.2 矩阵运算2. NumPy 通用函数2.1 数组的四则运算2.2 数组的广播机制

1. NumPy 矩阵

NumPy中的矩阵对象为matrix,它包含有矩阵的数据处理,矩阵计算,转置,可逆性等功能。matrix是ndarray的子类,矩阵对象是继承自NumPy数组对象的二维数组对象,因此,矩阵会含有数组的所有数据属性和方法。但是,矩阵与数组还是有一些重要的区别。

矩阵和数组的区别: 矩阵是数学上的概念,数组只是一种数据存储方式。矩阵必须是二维的。 .

1.1 矩阵的创建

在NumPy中,使用mat()、matrix()以及bmat()函数创建矩阵。 使用字符串创建矩阵,在mat()函数中输入一个字符串,该字符串以空格分隔列,以分号分隔行。

import numpy as np # 使用 分号 隔开数据 m1 = np.mat("1 2 3;4 5 6;7 8 9") m2 = np.mat([[1,2,3],[4,5,6],[7,8,9]]) # 👉 (2)使用嵌套序列创建矩阵 print(m1) print("\n",m2,"\n") # 👉(3)使用一个数组创建矩阵 m3 = np.arange(16).reshape(4,4) # 👉(4)使用matrix()函数创建矩阵 # matrix()函数可以将字符串、嵌套序列、数组和matrix转换成矩阵。 # 其函数格式: matrix(data,dtype=None,copy=True) m4 = np.matrix(m3*3) print(m3,"\n") print(m4) # 👉(5)使用bmat()函数创建矩阵 #如果想将小矩阵组合成大矩阵,在NumPy中,可以使用bmat分块(block matrix)矩阵函数实现。 # 其函数格式: bmat(obj,ldict=None,gdict=None) # bmat: block matrix 分块矩阵 bm = np.bmat("m3 m4") print(bm)

.

1.2 矩阵运算

矩阵与数相乘:matr1*3矩阵相加减:matr1±matr2矩阵相乘:matr1*matr2矩阵对应元素相乘:np.multiply(matr1,matr2)

矩阵特有属性:

# 以上面m1、m2为数据 ,进行矩阵与数相乘 M = m1 * 3 print(M) # 矩阵相加 add = m1 + m2 print(add) # 矩阵元素相乘 mul = np.multiply(m1, m2) print(mul) # 矩阵的属性:转置 m1.T print(m1.T,"\n") # 矩阵的属性:共轭转置 print(m1.H,"\n") # 矩阵的属性:逆矩阵 print(m1.I,"\n") # 矩阵的属性:二维数组视图 print(m1.A,"\n")

2. NumPy 通用函数

通用函数(ufunc)是一种针对ndarray中的数据执行元素级运算的函数,函数返回的是一个新的数组。

我们将ufunc中接收一个数组参数的函数称为一元通用函数,接受两个数组参数的则称为二元通用函数。

常见的一元通用函数:

常见的二元通用函数:

2.1 数组的四则运算

注意:当进行运算的两个数组形状一样时,相对应位置的元素进行运算 当进行运算的两个数组形状不一样时,先利用“广播机制”对数组进行变形,再运算

# 两数组相减,同理: + * / sub = arr1-arr2 print(sub) # 整除 dio = arr1 // arr2 print(dio) # 指数运算 exp = arr1 ** 2 print(exp) # 求余 d = arr1 % arr2 print(d)

2.2 数组的广播机制

广播(broadcasting) :是指不同形状的数组之间执行算术运算的方式。 对于同样大小的数组,二元运算符是对相应元素逐个计算:

a = np.array([1,2,3]) b = np.ones(3, int) print(a) print(b) print(a + b) # 一维数组和二维数组相加 z = np.array([[1,1,1], [2,2,2], [3,3,3]]) x = np.array([10, 20, 30]) print(z) print("-" * 10) print(x) w =x * z print("\n",w)

📖 广播的规则 :

规则1: 如果两个数组的维度数不相同,那么小维度数组的形状将会在最左边补1。规则2: 如果两个数组的形状在任何一个维度上不匹配,那么数组的形状会沿着维度为1的维度扩展以匹配另外一个数组的形状。规则3: 如果两个数组的形状在任何一个维度上都不匹配,并且没有任何一个维度等于1,那么会引发异常。 # 例1: 扩展一维数组 a = np.array([[0,0,0], [1,1,1], [2,2,2], [3,3,3]]) b = np.arange(1,4) c = a+b print(c) # 例2:扩展二维数组 d = np.array([1, 2, 3, 4]).reshape(4,1) print(d) print(a + d) # a 还是上面数据

# 例3:两个数组都需要扩展 t = np.arange(3) y = np.arange(3).reshape(3,1) print(t+y) print(t-y) print(t*y) print(t/y)

最新回复(0)