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

1.4 NumPy数组

安装好NumPy后,就可以开始摆弄NumPy数组了。与Python中的列表相比,进行数值运算时NumPy数组的效率要高得多。事实上,NumPy数组是针对某些对象进行了大量的优化工作。

完成相同的运算时,NumPy代码与Python代码相比用到的显式循环语句明显要少,因为NumPy是基于向量化的运算。还记得高等数学中标量和向量的概念吗?例如,数字2是一个标量,计算2加2时,进行的是标量加法运算。通过一组标量,我们可以构建出一个向量。用Python编程的术语来说,我们得到了一个一维数组。当然,这个概念可以扩展至更高的维度。实际上,针对两个数组的诸如加法之类的运算,可以将其转化为一组标量运算。使用纯Python时,为了完成该操作,可以使用循环语句遍历第一个数组中的每个元素,并与第二个数组中对应的元素相加。然而,在数学家眼里,这种方法过于繁琐。数学上,可以将这两个向量的加法视为单一操作。实际上,NumPy数组也可以这么做,并且它用低级C例程针对某些操作进行了优化处理,使得这些基本运算效率大为提高。NumPy数组将在第2章中详细介绍。

时间: 2024-08-03 02:44:06

《Python数据分析》一1.4 NumPy数组的相关文章

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

第2章 NumPy数组 Python数据分析在前面部分,我们已经安装了NumPy和几个关键Python程序库,并动手编写了一些代码.在本章中,我们将正式步入NumPy数组的世界,带领大家一起学习NumPy和数组的知识.阅读本章后,你会对NumPy数组及其相关函数有个基本了解. 本章涉及的主题如下所示. 数据类型. 数组类型. 类型转换. 创建数组. 索引. 花式索引. 切片(Slicing). 处理数组的形状. 2.1 NumPy数组对象 NumPy中的多维数组称为ndarray,它有两个组成部

《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数据分析》一2.10 用布尔型变量索引NumPy数组

2.10 用布尔型变量索引NumPy数组 布尔型索引是指根据布尔型数组来索引元素的方法,属于花式索引系列.因为布尔型索引是花式索引的一个分类,所以它们的使用方法基本相同. 下面用代码(详见本书代码包中的boolean_indexing.py文件)具体演示其使用方法: import scipy.misc import matplotlib.pyplot as plt import numpy as np lena = scipy.misc.lena() def get_indices(size):

《Python数据分析》一2.3 选择NumPy数组元素

2.3 选择NumPy数组元素 有时,我们可能想从数组中选择指定的元素.如何做到这一点呢?不妨从创建一个 2×2矩阵着手(以下代码取自本书代码包中的elementselection.py文件): In: a = array([[1,2],[3,4]]) In: a Out: array([[1, 2], [3, 4]]) 上面的矩阵是通过向array()函数传递一个由列表组成的列表得到的.接下来,我们要逐个选择矩阵的各个元素,代码如下所示.别忘了,下标是从0开始的: In: a[0,0] Out

《Python数据分析》一2.4 NumPy的数值类型

2.4 NumPy的数值类型 Python自身虽然支持整型.浮点型和复数型,但对于科学计算来说,还远远不够.现实中,我们仍然需要更多的数据类型,来满足在精度和存储大小方面的各种不同的要求.为此,NumPy提供了更加丰富的数据类型.注意,NumPy跟数学运算有关的数据类型的名称都以数字结尾.而这个数字指示了该类型的变量所占用的二进制位数.表2-1(改编自<NumPy用户指南>)概述了NumPy的各种数值类型. 每一种数据类型都有相应的转换函数(请参考本书代码包中的numericaltypes.p

《Python数据分析》一2.5 一维数组的切片与索引

2.5 一维数组的切片与索引 一维NumPy数组的切片操作与Python列表的切片一样.下面先来定义包含数字0.1.2,直到8的一个数组,然后通过指定下标3到7来选择该数组的部分元素,这实际上就是提取数组中值为3到6的那些元素(完整代码见本书代码包中的slicing1d.py): In: a = arange(9) In: a[3:7] Out: array([3, 4, 5, 6]) 可以用下标选择元素,下标范围从0到7,并且下标每次递增2,如下所示: In: a[:7:2] Out: arr

《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.2 创建多维数组

2.2 创建多维数组 既然我们已经知道创建向量的方法,下面开始学习如何建立多维NumPy数组.生成矩阵后,再来看它的形状,代码(取自本书代码包中的arrayattributes.py文件)如下所示. 1.创建多维数组,代码如下: In: m = array([arange(2), arange(2)]) In: m Out: array([[0, 1], [0, 1]]) 2.显示该数组的形状,代码如下: In: m.shape Out: (2, 2) 上面,我们用arange()子例程直接建立

【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识

        前面几篇文章采用的案例的方法进行介绍的,这篇文章主要介绍Python常用的扩展包,同时结合数据挖掘相关知识介绍该包具体的用法,主要介绍Numpy.Pandas和Matplotlib三个包.目录:        一.Python常用扩展包         二.Numpy科学计算包         三.Pandas数据分析包         四.Matplotlib绘图包         前文推荐:        [Python数据挖掘课程]一.安装Python及爬虫入门介绍