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

目录
相关文章
|
2月前
|
Python
NumPy 教程 之 NumPy 矩阵库(Matrix) 4
矩阵是由行和列构成的矩形数组,其元素可以是数字、符号或数学表达式。
31 4
|
2月前
|
Python
NumPy 教程 之 NumPy 矩阵库(Matrix) 2
不同于ndarray,matlib函数生成的是矩阵形式。教程中详细解释了矩阵的概念,并介绍了转置矩阵的实现方式,使用T属性或函数实现。此外,还展示了如何利用`matlib.empty()`创建指定形状的新矩阵,并可选择数据类型及顺序。最后通过示例演示了矩阵填充随机数据的方法。
34 3
|
1月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
66 10
|
1月前
|
Python
使用 NumPy 进行数组操作的示例
使用 NumPy 进行数组操作的示例
|
1月前
|
索引 Python
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧1
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
85 4
|
2月前
|
Python
NumPy 教程 之 NumPy 矩阵库(Matrix) 8
矩阵是由行和列构成的矩形数组,其元素可以是数字、符号或表达式。教程中讲解了如何使用`numpy.matlib.rand()`创建指定大小且元素随机填充的矩阵,并演示了矩阵与ndarray之间的转换方法。此外,还介绍了如何使用T属性进行矩阵转置。示例代码展示了创建矩阵、将其转换为ndarray以及再转回矩阵的过程。
42 9
|
2月前
|
Python
NumPy 教程 之 NumPy 矩阵库(Matrix) 6
主要内容包括矩阵的概念、转置操作及单位矩阵生成。使用numpy.matlib提供的工具,如`numpy.matlib.identity()`可创建指定大小的单位矩阵,示例中创建了一个5x5的浮点型单位矩阵,并展示了其输出结果。
32 0
|
6月前
|
Python
Numpy(Numerical Python)是一个用于处理大型多维数组和矩阵的Python库
【2月更文挑战第28天】Numpy(Numerical Python)是一个用于处理大型多维数组和矩阵的Python库
55 1
|
存储 机器学习/深度学习 数据挖掘
向量化操作简介和Pandas、Numpy示例
Pandas是一种流行的用于数据操作的Python库,它提供了一种称为“向量化”的强大技术可以有效地将操作应用于整个列或数据系列,从而消除了显式循环的需要。在本文中,我们将探讨什么是向量化,以及它如何简化数据分析任务。
258 0