Python:多维数组(“矩阵”)与列表中的列表是一样的吗?

Python:多维数组(“矩阵”)与列表中的列表是一样的吗?,python,arrays,list,matrix,multidimensional-array,Python,Arrays,List,Matrix,Multidimensional Array,我试图理解人们所说的矩阵和人们所说的列表之间的区别 它们是否相同,因为一旦创建,您可以对它们执行相同的操作(以相同的方式在它们内部引用元素,等等) 示例: 在列表中列出列表: ListsInLists = [[1,2],[3,4],[5,6]] 创建多维数组: np.random.rand(3,2) 堆叠阵列以形成矩阵: Array1 = [1,2,3,4] Array2 = [5,6,7,8] CompleteArray = vstack((Array1,Array2)) 它们不一样。在

我试图理解人们所说的矩阵和人们所说的列表之间的区别

它们是否相同,因为一旦创建,您可以对它们执行相同的操作(以相同的方式在它们内部引用元素,等等)

示例:

在列表中列出列表:

ListsInLists = [[1,2],[3,4],[5,6]]
创建多维数组:

np.random.rand(3,2)
堆叠阵列以形成矩阵:

Array1 = [1,2,3,4]
Array2 = [5,6,7,8]
CompleteArray = vstack((Array1,Array2))

它们不一样。在python中,数组比列表的内存效率更高,而且由于numpy模块,可以在数组上执行列表无法执行的其他函数

对于计算,在numpy中使用数组往往比使用内置列表函数快得多


如果你想在问题的答案中读更多的话,你可以读更多。

列表列表与二维Numpy数组非常不同

  • 列表具有动态大小,可以容纳任何类型的对象,而数组具有固定大小和统一类型的条目
  • 在列表列表中,每个子列表可以有不同的大小。阵列沿每个轴具有固定的尺寸
  • 数组存储在连续的内存块中,而列表中的对象可以存储在堆的任何位置
Numpy阵列的限制性更强,但性能和内存效率更高。它们还为矢量化数学运算提供了方便的函数

在内部,列表表示为指向任意Python对象的指针数组。当在列表末尾重复追加时,数组使用指数过度分配来实现线性性能。另一方面,Numpy数组通常表示为数字的C数组


(这个答案不包括Numpy对象数组的特殊情况,它也可以容纳任何类型的Python对象。它们很少使用,因为它们有Numpy数组的限制,但没有性能优势。)

列表中的列表不一定必须与父列表中的另一个列表长度相同。如果有纯numpy矩阵,则行的长度必须相同且一致。否则它将是一个统一的Python对象系列,Python本身没有内置类型或标准库中的数组或矩阵。你指的是NumPy数组吗?是的,我指的是NumPy数组。道歉。我从Java迁移过来,我相信它是内置的?