【问题标题】:Python: Is a multidimensional array ("matrix") the same thing as lists within lists?Python:多维数组(“矩阵”)与列表中的列表相同吗?
【发布时间】:2017-04-15 05:03:05
【问题描述】:

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

它们是否相同,一旦创建,您可以对它们做相同的事情(在它们中以相同的方式引用元素等)。

例子:

在列表中创建列表:

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))

【问题讨论】:

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

标签: python arrays list matrix multidimensional-array


【解决方案1】:

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

  • 列表具有动态大小,可以容纳任何类型的对象,而数组具有固定大小和统一类型的条目。
  • 在列表列表中,每个子列表可以有不同的大小。数组沿每个轴具有固定尺寸。
  • 数组存储在连续的内存块中,而列表中的对象可以存储在堆上的任何位置。

Numpy 数组限制性更强,但提供更高的性能和内存效率。它们还为矢量化数学运算提供了方便的函数。

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

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

【讨论】:

    【解决方案2】:

    它们不一样。在 python 中,数组比列表更节省内存,并且由于 numpy 模块,您可以在数组上执行其他功能,而这些功能是您无法在列表上执行的。

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

    如果您想在this 问题的答案中阅读更多内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-07
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多