【问题标题】:Python "array-type" data for beginners面向初学者的 Python“数组类型”数据
【发布时间】:2015-03-19 00:05:27
【问题描述】:

在对脚本语言(BASH + 2 个基于代码的程序,SAC 和 FLAC)有一些经验之后,我刚刚开始 Python 编码。所以我对基本的代码结构、循环等有了合理的理解。到目前为止,我的工作主要包括重组和改组各种表之间的数据,根据来自另一个表的值从一个表中查找数据等等。

但是,我对数据和 2D 数据的所有可能处理方式感到有些不知所措 - 列表列表、numpy 数组、numpy 记录数组等等,它们中的每一个都有不同的加载方式一个文件,访问它们并修改它们。

您是否知道可能的数据类型以及如何处理、访问它们以及在它们之间切换的摘要(最好是傻瓜式)?

如果它支持谷歌,那么我做得不够,我道歉。

干杯

Vhailor

【问题讨论】:

  • 您想了解全部 783000 个,还是只了解最常见的?
  • 看来我错过了最后 3 个……但是好的,有一些关于如何处理 2D 数据的基本方法的总结吗?最好是那些包含在基本 Python 和 Numpy 中的那些?也许我会指定我尝试使用 if 进行数据分析 - 处理大量时间序列 (X-Y) 数据......如果这有帮助

标签: arrays python-2.7 numpy


【解决方案1】:

我将在这里提到三种常见的数组类型:listtuple,它们是内置的并记录在案的here(以及其他一些),以及numpy.array

列表

列表是内置的可变对象,可以存储列表、元组和 numpy 数组。列表文字用方括号 ([1,2,3,4]) 编写,并且可以用方括号索引(从零开始):

a = [1,2,3,4]
print a[1] # 2

元组

元组类似于列表,但它们用括号 ((1,2,3,4)) 编写并且是不可变的(它们不能被修改),但它们在某些操作上比列表更快。

a = (1,2,3,4)
a[1] += 1 # raises a TypeError

您可以通过将元组作为参数传递给内置的list() 函数来从元组转换为列表,也可以使用tuple() 进行其他方式的转换。

NumPy 数组对象

NumPy 数组对象不是内置的;它们是NumPy 的一部分。它们是用numpy.array() 创建的,它接受任何可迭代对象(列表和元组都是可迭代的)并返回具有相同数据的 NumPy 数组对象:

import numpy as np
a = np.array([1,2,3,4])

NumPy 数组是用 C 语言实现的,而且可能更快,而且 NumPy 实现了一堆有用的函数来操作它们(在我上面链接的文档中记录)。

关于保存和加载它们,我最近answeredquestion 关于保存 NumPy 数组,我在其中提到的所有方法都适用于所有这三种数组类型。

【讨论】:

  • 需要强调的一点是,NumPy 数组的核心几乎就是 C 数组。因此,对于 C 数组来说困难/缓慢的事情对于 NumPy 数组来说也很慢,比如追加行(列表通常有 O(1) 追加)。另一方面,NumPy 数组相对原始数据的内存开销相对较小,而且通常无需复制即可进行操作和查看。
  • 感谢您的帮助!我知道这里的人群对这些方法的速度很感兴趣。老实说,我正在努力寻找可能需要更长时间但易于处理的东西。我经常需要对表进行复杂的搜索,从多个表中生成数据组合,然后将数据添加到其他一些表中……最近,当我发现记录数组数据类型由 np. genfromtxt 对列搜索非常方便,但在添加列或从标题中提取信息时就很麻烦了。
猜你喜欢
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 2022-12-11
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
相关资源
最近更新 更多