《Python数据分析》一第2章 NumPy数组2.1 NumPy数组对象

第2章 NumPy数组

Python数据分析
在前面部分,我们已经安装了NumPy和几个关键Python程序库,并动手编写了一些代码。在本章中,我们将正式步入NumPy数组的世界,带领大家一起学习NumPy和数组的知识。阅读本章后,你会对NumPy数组及其相关函数有个基本了解。

本章涉及的主题如下所示。

  • 数据类型。
  • 数组类型。
  • 类型转换。
  • 创建数组。
  • 索引。
  • 花式索引。
  • 切片(Slicing)。
  • 处理数组的形状。

2.1 NumPy数组对象

NumPy中的多维数组称为ndarray,它有两个组成部分。

  • 数据本身。
  • 描述数据的元数据。

在数组的处理过程中,原始信息不受影响,变化的只是元数据而已。

在之前的章节中,我们曾经用arange()函数来生成数组。实际上,那是用来存放一组数值的一维数组,这里的ndarray则可以具有一个以上的维度。

NumPy数组的优势
NumPy数组通常是由相同种类的元素组成的,即数组中的数据项的类型必须一致。NumPy数组元素类型一致的好处是:由于知道数组元素的类型相同,所以能轻松确定存储数组所需空间的大小。同时,NumPy数组还能够运用向量化运算来处理整个数组;而完成同样的任务,Python的列表则通常必须借助循环语句遍历列表,并对逐个元素进行相应的处理。此外,NumPy使用了优化过的C API,所以运算速度格外快。

NumPy数组的索引方法与Python类似,下标从0开始。NumPy数组的数据类型由特殊的对象指定,本章后面的部分将对这些对象进行详细介绍。

今后,我们会经常利用arange()子例程来建立数组,该函数取自本书附带的arrayattributes.py文件。本章中的代码片断大都取自IPython会话。注意,IPython启动时会自动导入NumPy库。下面代码展示了如何获得数组的数据类型:

In: a = arange(5)
In: a.dtype
Out: dtype('int64')

以上数组的数据类型为int64(至少在作者的电脑上是这样的),不过,如果你的Python为32位版本的话,得到的结果将是int32。无论上面哪一种情况,都是在处理整型变量(64位或者32位)。对于数组,除了要知道数据类型外,还要注意其形状,这一点非常重要。在第1章“Python程序库入门”中,我们曾经举例说明向量(一维NumPy数组)的创建方法。数学家会经常用到向量,但对我们来说,最常用的却是更高维度的对象。下面来看刚刚生成的那个向量的形状:

In: a
Out: array([0, 1, 2, 3, 4])
In: a.shape
Out: (5,)

如你所见,该向量有5个元素,它们的值分别是从0到4。该数组的shape属性是一个元组(就本例而言,这是一个单元素元组),存放的是数组在每一个维度的长度。

时间: 2024-09-24 14:03:19

《Python数据分析》一第2章 NumPy数组2.1 NumPy数组对象的相关文章

《Python数据分析》一1.4 NumPy数组

1.4 NumPy数组 安装好NumPy后,就可以开始摆弄NumPy数组了.与Python中的列表相比,进行数值运算时NumPy数组的效率要高得多.事实上,NumPy数组是针对某些对象进行了大量的优化工作. 完成相同的运算时,NumPy代码与Python代码相比用到的显式循环语句明显要少,因为NumPy是基于向量化的运算.还记得高等数学中标量和向量的概念吗?例如,数字2是一个标量,计算2加2时,进行的是标量加法运算.通过一组标量,我们可以构建出一个向量.用Python编程的术语来说,我们得到了一

《Python数据分析》一2.11 NumPy数组的广播

2.11 NumPy数组的广播 当操作对象的形状不一样时,NumPy会尽力进行处理. 例如,假设一个数组要跟一个标量相乘,这时标量需要根据数组的形状进行扩展,然后才可以执行乘法运算.这个扩展的过程叫做广播(broadcasting).下面用代码(详见本书代码包中的broadcasting.py文件)加以说明: import scipy.io.wavfile import matplotlib.pyplot as plt import urllib2 import numpy as np resp

《Python数据分析》一第1章 Python程序库入门1.1 本书用到的软件

第1章 Python程序库入门 Python数据分析首先浏览一下http://www.xmind.net/m/WvfC/页面,从这里可以找到一幅描绘数据分析软件的脑图.很明显,我们不会在本章中安装本书所需的所有软件,而是介绍如何在不同的操作系统上面安装NumPy.SciPy.matplotlib和IPython,同时考察一些使用NumPy库的简单代码. NumPy是一个基础性的Python库,为我们提供了常用的数值数组和函数. SciPy是Python的科学计算库,对NumPy的功能进行了扩充,

《Python数据分析与挖掘实战》一第2章 Python数据分析简介

第2章 Python数据分析简介 Python是一门简单易学且功能强大的编程语言.它拥有高效的高级数据结构,并且能够用简单而又高效的方式进行面向对象编程.Python优雅的语法和动态类型,再结合它的解释性,使其在许多领域成为编写脚本或开发应用程序的理想语言. 要认识Python,首先得明确一点,Python是一门编程语言!这就意味着,原则上来说,它能够完成Matlab能够做的所有事情(因为大不了从头开始编写),而且在大多数情况下,同样功能的Python代码会比Matlab代码更加简洁.易懂:另一

《从Excel到Python——数据分析进阶指南》一第1章 生成数据表

第1章 生成数据表从Excel到Python--数据分析进阶指南常见的生成数据表的方法有两种,第一种是导入外部数据,第二种是直接写入数据. Excel中的"文件"菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入. Python支持从多种类型的数据导入.在开始使用Python进行数据导入前需要先导入pandas库,为了方便起见,我们也同时导入numpy库. import numpy as np import pandas as pd 导入数据表下面分别是从Exc

《Python数据分析》一2.6 处理数组形状

2.6 处理数组形状 前面,我们学习过reshape()函数,实际上,除了数组形状的调整外,数组的扩充也是一个经常碰到的乏味工作.比如,可以想像一下将多维数组转换成一维数组时的情形.下面的代码就是用来干这件事情的,它取自本书代码包中的shapemanipulation.py文件: import numpy as np # Demonstrates multi dimensional arrays slicing. # # Run from the commandline with # # pyt

《Python数据分析与挖掘实战》一2.3 Python数据分析工具

2.3 Python数据分析工具 Python本身的数据分析功能不强,需要安装一些第三方扩展库来增强它的能力.本书用到的库有Numpy.Scipy.Matplotlib.Pandas.Scikit-Learn.Keras和Gensim等,下面将对这些库的安装和使用进行简单的介绍. 如果读者安装的是Anaconda发行版,那么它已经自带了以下库:Numpy.Scipy.Mat-plotlib.Pandas和Scikit-Learn. 本章主要是对这些库进行简单的介绍,在后面的章节中,会通过各种案例

《Python数据分析》一导读

前 言 Python数据分析"数据分析是Python的杀手锏." --佚名 数据分析在自然科学.生物医学和社会科学领域有着悠久的历史.目前,如雷贯耳的大数据虽然尚没有严格的定义,但是它对数据分析工作的影响是毋庸置疑的.下面列举几个与大数据相关的趋势. 世界人口持续增长. 越来越多的数据被搜集和存储. 电脑芯片集成的晶体管数量不可能无限增长. 政府.科学界.工业界和个人对数据洞察力的需求与日俱增. 随着数据科学的炒作,数据分析也呈现流行之势.与数据科学类似,数据分析也致力于从数据中提取有

numpy-大家谁能看懂这段代码?python数据分析的,求赐教!谢谢

问题描述 大家谁能看懂这段代码?python数据分析的,求赐教!谢谢 1.lines = [line.split('t') for line in open('路径/a.txt')] 2.# file colums 3.num=len(lines[0]) 4.# file rows 5.n=len(lines) 6.df = [[float(x) for x in line] for line in lines[1:]] 7.result=[] 8.import numpy 9.npdata=n