龙空技术网

Python 中的numpy.matrix和 numpy.ndarray矩阵运算差异总结

AI机器与视觉 48

前言:

当前兄弟们对“python把数组变成矩阵”都比较看重,咱们都需要剖析一些“python把数组变成矩阵”的相关文章。那么小编也在网络上汇集了一些对于“python把数组变成矩阵””的相关知识,希望兄弟们能喜欢,小伙伴们一起来了解一下吧!

numpy 库在 Python 中用于数值计算,特别是在处理数组和矩阵时非常高效。numpy 提供了两种主要的数据结构来表示矩阵:numpy.matrix 和 numpy.ndarray。尽管这两种方法都可以用来表示和操作矩阵,但它们在某些方面有着显著的差异。

(1)numpy.matrix

numpy.matrix 是专门用于线性代数计算的一个类。在 numpy.matrix 对象中,默认乘法星号(*)用于矩阵乘法。numpy.matrix 对象有特定的方法和属性,用于处理线性代数问题,例如 .I(求逆)和 .H(求共轭转置)。

例如:

import numpy as npA = np.matrix([[1, 2], [3, 4]])B = np.matrix([[2, 0], [1, 2]])# 矩阵乘法C = A * B

(2)numpy.ndarray

numpy.ndarray 是一个更通用的数组类,可以表示向量、矩阵或更高维度的张量。在 numpy.ndarray 对象中,星号(*)用于元素级乘法(Hadamard 乘法),而不是矩阵乘法。矩阵乘法可以通过 numpy.dot() 或者 @ 运算符来进行。

例如:

A = np.array([[1, 2], [3, 4]])B = np.array([[2, 0], [1, 2]])# Hadamard 乘法C = A * B# 矩阵乘法D = np.dot(A, B)# 或者D = A @ B

(3)为什么大多数情况下使用 numpy.ndarray?

1、通用性:numpy.ndarray 可以表示任何维度的数组,因此在处理不仅限于二维矩阵的问题时更加灵活。

2、性能:numpy.ndarray 对象一般而言更高效,因为它没有 numpy.matrix 中专门用于矩阵操作的额外元数据和方法。

3、社群共识:多数情况下,Python 社群和多数数据科学、机器学习库都倾向于使用 numpy.ndarray。

4、清晰度:使用 numpy.ndarray 和显式地调用线性代数操作(如 np.dot)通常会让代码更加易于理解,因为它不依赖于特定数据结构的运算符重载。

因此,尽管 numpy.matrix 在某些特定应用中可能更加直观或方便,但 numpy.ndarray 由于其灵活性和广泛的社群支持,通常是更好的选择。

标签: #python把数组变成矩阵