有人可以合并列表,数组,numpy数组,pandas数据帧,系列之间的定义和差异吗?

时间:2016-03-09 02:30:55

标签: python arrays numpy pandas dataframe

我是一名Python初学者,并对这些不同形式的存储数据感到困惑?什么时候应该使用哪个。哪些适合存储矩阵(和矢量)?

3 个答案:

答案 0 :(得分:0)

  • list - 存储多个值的原始Python方式
  • array - 一个小小的Python模块(让我们忽略它)
  • numpy数组 - Python中与数学和MATLAB等语言中使用的数组,矩阵和向量最接近的东西
  • dataframe,datseries - pandas结构,通常构建在numpy上,更适合表和数据库中的数据类型。

更具体地说,您需要了解需要解决的问题类型。您使用的是哪种数据,以及您需要使用哪些数据?

lists可以改变大小,并且可以包含多种元素。

numpy.array的大小是固定的,包含统一类型的元素。它是多维的,并且已经实现了许多数学函数。

答案 1 :(得分:0)

以下是一般性概述(部分归功于在线文档,Mark Lutz和Wes McKinney O' Reilly书籍):

  • list :Python标准中提供的常规选择对象 图书馆。列表是按位置任意排列的任意集合 键入的对象,没有固定的大小。它们也是可变的(str 例如,不是)。

  • numpy.ndarray :存储相同类型的项目集合。一切 item占用相同大小的内存块(不一定是这种情况 在list)。如何解释数组中的每个项目 由单独的数据类型对象(dtype指定,不要混淆 与type)。此外,与列表不同,ndarray可能不具备 附加到位的项目(即.append方法返回一个新的 包含附加项的数组,与list s不同。 单个ndarray是一个向量,同一大小ndarray的{​​{1}}是一个二维数组(a.k.a矩阵),依此类推。您可以通过嵌套来制作任意n维对象。

  • ndarray :包含一个类似于一维数组的对象 数据数组(任何pandas.Series)和相关的数据数组 标签,称为其索引。它基本上是一个荣耀的dtype, 带有标签(存储在numpy.ndarray内作为Series对象) 物品和一些方便的额外功能。另外,Index可以 包含多个不同Series s的对象(更像是dtype)。

  • list :多个pandas.DataFrame的集合,形成一个 类似于表的对象,具有许多非常方便的数据功能 分析

答案 2 :(得分:0)

列表:列表非常灵活,可以保存完全异构的任意数据,并且可以非常有效地附加它们。

数组:另一方面,array.array类型只是C数组上的一个瘦包装器。它只能保存同类数据,所有类型相同,因此它只使用sizeof(一个对象)*长度字节的内存。

Numpy数组:但是,如果你想对同类数组数据进行数学运算,那么你最好使用NumPy,它可以自动对复杂的多维数组上的操作进行矢量化。

Pandas:Pandas提供基于NumPy构建的高级数据操作工具。 NumPy本身就是一个相当低级的工具。

Pandas提供了一堆C或Cython优化的例程,它们比numpy“等价物”(例如阅读文本)更快。对于类似点积的东西,pandas DataFrames通常比numpy数组慢

仅供参考:取自不同的网络资源