Numpy中常用的10个矩阵操作示例(一)

简介: Numpy中常用的10个矩阵操作示例

数据科学和机器学习所需的数学知识中,约有30-40%来自线性代数。矩阵运算在线性代数中占有重要的地位。Numpy通常用于在Python中执行数值计算,并且对于矩阵操作做了特殊的优化。numpy通过向量化避免许多for循环来更有效地执行矩阵操作。

我将包括本文中讨论的每个矩阵操作的含义、背景描述和代码示例。本文末尾的“关键要点”一节将提供一些更具体矩阵操作的简要总结。所以,一定要阅读这部分内容。

我将按照以下顺序讨论每个矩阵操作。

  1. 内积
  2. 点积
  3. 转置


  4. 行列式

  5. 伪逆
  6. 扁平化
  7. 特征值和特征向量

内积 Inner product

内积接收两个大小相等的向量,并返回一个数字(标量)。这是通过将每个向量中相应的元素相乘并将所有这些乘积相加来计算的。在numpy中,向量被定义为一维numpy数组。

为了得到内积,我们可以使用np.inner()。对于1维向量np.dot()和np.inner()是相同的两者都给出了相同的结果(np文档中有详细描述,大意是对于2-D数组,它等效于矩阵乘法,对于1-D数组,其等效于向量的内积)。这些函数的输入是两个向量它们的大小应该是一样的。

importnumpyasnp#Vectorsas1Dnumpyarraysa=np.array([1, 2, 3])
b=np.array([4, 5, 6])
print("a= ", a)
print("b= ", b)
print("\ninner:", np.inner(a, b))
print("dot:", np.dot(a, b))

640.png

点积 Dot product

点积是为矩阵定义的。它是两个矩阵中相应元素的乘积的和。为了得到点积,第一个矩阵的列数应该等于第二个矩阵的行数。

有两种方法可以在numpy中创建矩阵。最常见的一种是使用numpy ndarray类。这里我们创建了二维numpy数组(ndarray对象)。另一种方法是使用numpy矩阵类。

ndarray和matrix对象的点积都可以使用np.dot()得到。

importnumpyasnp#Matricesasndarrayobjectsa=np.array([[1, 2], [3, 4]])
b=np.array([[5, 6, 7], [8, 9, 10]])
print("a", type(a))
print(a)
print("\nb", type(b))
print(b)
#Matricesasmatrixobjectsc=np.matrix([[1, 2], [3, 4]])
d=np.matrix([[5, 6, 7], [8, 9, 10]])
print("\nc", type(c))
print(c)
print("\nd", type(d))
print(d)
print("\ndot product of two ndarray objects")
print(np.dot(a, b))
print("\ndot product of two matrix objects")
print(np.dot(c, d))

640.png

当使用*操作符将两个ndarray对象相乘时,结果是逐元素相乘。另一方面,当使用*操作符将两个矩阵对象相乘时,结果是点(矩阵)乘积,相当于前面的np.dot()。

importnumpyasnp#Matricesasndarrayobjectsa=np.array([[1, 2], [3, 4]])
b=np.array([[5, 6], [8, 9]])
print("a", type(a))
print(a)
print("\nb", type(b))
print(b)
#Matricesasmatrixobjectsc=np.matrix([[1, 2], [3, 4]])
d=np.matrix([[5, 6], [8, 9]])
print("\nc", type(c))
print(c)
print("\nd", type(d))
print(d)
print("\n* operation on two ndarray objects (Elementwise)")
print(a*b)
print("\n* operation on two matrix objects (same as np.dot())")
print(c*d)

640.png

转置

矩阵的转置是通过行与列的交换得到的。我们可以使用np.transpose()函数或NumPy ndarray.transpose()方法或ndarray。T(一种不需要括号的特殊方法)来求转置。它们都给出相同的输出。

importnumpyasnpa=np.array([[1, 2], [3, 4], [5, 6]])
print("a = ")
print(a)
print("\nWith np.transpose(a) function")
print(np.transpose(a))
print("\nWith ndarray.transpose() method")
print(a.transpose())
print("\nWith ndarray.T short form")
print(a.T)

640.png

转置也可以应用到向量上。但是,从技术上讲,一维numpy数组不能转置。

importnumpyasnpa=np.array([1, 2, 3])
print("a = ")
print(a)
print("\na.T = ")
print(a.T)

640.png

目录
相关文章
|
7月前
|
存储 机器学习/深度学习 数据挖掘
向量化操作简介和Pandas、Numpy示例
Pandas是一种流行的用于数据操作的Python库,它提供了一种称为“向量化”的强大技术可以有效地将操作应用于整个列或数据系列,从而消除了显式循环的需要。在本文中,我们将探讨什么是向量化,以及它如何简化数据分析任务。
96 0
|
Python
Numpy中数组和矩阵操作的数学函数
Numpy 是一个强大的 Python 计算库。它提供了广泛的数学函数,可以对数组和矩阵执行各种操作。本文中将整理一些基本和常用的数学操作。
131 0
Numpy中数组和矩阵操作的数学函数
科学计算库Numpy-矩阵操作
科学计算库Numpy-矩阵操作
|
索引 Python
科学计算库Numpy-矩阵属性
科学计算库Numpy-矩阵属性
|
Python
Numpy向量和矩阵操作
NumPy是Python的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。本文介绍Numpy的向量和矩阵操作。
102 0
|
机器学习/深度学习 存储 索引
优达学城深度学习之二——矩阵数学和Numpy复习
优达学城深度学习之二——矩阵数学和Numpy复习
优达学城深度学习之二——矩阵数学和Numpy复习
|
机器学习/深度学习 Serverless Python
Numpy中常用的10个矩阵操作示例(二)
Numpy中常用的10个矩阵操作示例
170 0
Numpy中常用的10个矩阵操作示例(二)
|
机器学习/深度学习 Python
第 109 天:NumPy 矩阵
第 109 天:NumPy 矩阵
117 0