推荐阅读时间:7min~10min 文章内容:Numpy 索引和切片 上一篇:Numpy 修炼之道 (4)—— 基本运算操作 Python 中原生的数组就支持使用方括号([])进行索引和切片操作,Numpy...单个元素索引 1-D数组的单元素索引是人们期望的。它的工作原理与其他标准Python序列一样。它是从0开始的,并且接受负索引来从数组的结尾进行索引。...>>> x = np.arange(10) >>> x[2] 2 >>> x[-2] 8 与Python原生的列表、元组不同的是,Numpy数组支持多维数组的多维索引。...切片支持 可以使用切片和步长来截取不同长度的数组,使用方式与Python原生的对列表和元组的方式相同。...x[np.array([3, 3, 1, 8])] 布尔索引数组 使用(整数)索引列表时,需要提供要选择的索引列表,最后生成的结果形状与索引数组形状相同;但是在使用布尔索引时,布尔数组必须与要编制索引的数组的初始维度具有相同的形状
NumPy数组 和 标准Python Array(数组) 之间有几个重要的区别: NumPy数组在创建时具有固定的大小,与Python的原生数组对象(可以动态增长)不同。...NumPy的数组类被称为ndarray。别名为 array。 请注意,numpy.array 与标准Python库类 array.array 不同,后者仅处理一维数组并提供较少的功能。...ndarray.size:数组元素的总数。这等于shape的元素的乘积。 ndarray.dtype:一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。...一般有6个机制创建数组: 从其他Python结构(例如,列表,元组)转换 numpy原生数组的创建(例如,arange、ones、zeros等) 从磁盘读取数组,无论是标准格式还是自定义格式 通过使用字符串或缓冲区从原始字节创建数组...asarray_chkfinite(a[, dtype, order]) 将输入转换为数组,检查NaN或Infs。 asscalar(a) 将大小为1的数组转换为标量等效数组。
例如,如果要生成一个二维数组,需要向array函数传递一个列表类型的参数。每一个列表元素是一堆的ndarray类型数组,作为二维数组的行。...正态分布的应用 生活、生产与科学实验中很多随机变量的概率分布都可以近似地用正态分布来描述。 正态分布特点 μ决定位置,标准差σ决定分布的幅度。当μ=0,σ=1时的正态分布是标准正态分布。...标准差的由来 是在概率论和统计方差衡量一组数据时离散程度的度量 其中M为平均值,n为数据总个数,σ为标准差,σ^2可以理解一个整体为方差 意义: 衡量数据集中离散程度的统计量 评估数据的稳定性与可靠性...…,dn) 功能:返回一个或一组样本,具有标准正态分布(期望为0,方差为1)。 其中dn表示维度,返回值为指定维度的array。...ndarray对象的内容可以通过索引或切片来访问和修改,与Python中list的切片操作一样。
我们在NumPy数组计算中看到:通用函数,可以使用NumPy的ufuncs代替循环来对数组进行快速的逐元素算术运算。...NumPy还实现了比较运算符,例如(大于)作为元素方式的ufunc。这些比较运算符的结果始终是具有布尔数据类型的数组。所有六个标准比较操作均可用: # 与数组每个比较,也可以使用!...它们的语法与NumPy版本的语法不同,特别是在多维数组上使用时,将失败或产生意外结果。对于这些示例,请确保使用np.sum(),np.any()和np.all()!...这是通过Python的按位逻辑运算符&,|,^和〜完成的。与标准算术运算符一样,NumPy将这些重载为ufunc,它们在(通常为Boolean)数组中逐个元素地工作。...易混淆 当使用&和|在整数上,表达式对元素的位进行运算。当使用and或or时,等效于要求Python将对象视为单个布尔实体。在Python中,所有非零整数都将评估为True。
NumPy,即 Numerical Python,是 Python 中最重要的数值计算基础包之一。许多提供科学功能的计算包使用 NumPy 的数组对象作为数据交换的标准接口之一。...为了让您了解性能差异,考虑一个包含一百万个整数的 NumPy 数组,以及等效的 Python 列表: In [7]: import numpy as np In [8]: my_arr = np.arange...f 标准单精度浮点数;与 C 浮点兼容 float64 f8 或 d 标准双精度浮点数;与 C 双精度和 Python float对象兼容 float128 f16 或 g 扩展精度浮点数 complex64...注意 这种用于 NumPy 数组的多维索引语法不适用于常规的 Python 对象,例如列表的列表。...两个二维数组与适当大小的一维数组之间的矩阵乘积会得到一个一维数组: In [247]: x @ np.ones(3) Out[247]: array([ 6., 15.]) numpy.linalg具有一套标准的矩阵分解和逆矩阵
for循环 Python 具有for语句,其目的与 C++ ,Pascal,Java 和其他语言中的等效构造相同。 但是,循环的机制有些不同。...与等效的 Python 代码相比,NumPy 代码需要更少的显式循环。 实战时间 – 相加向量 假设我们要添加两个分别称为a和b的向量。向量在数学上是指一维数组。...一维切片和索引 一维 NumPy 数组的切片就像 Python 列表的切片一样工作。...就像 Python 列表一样,可以以高效的方式对 NumPy 数组进行切片和索引。 NumPy 数组具有处理多个维度的附加功能。 数组的形状可以通过多种方式进行操作-堆叠,调整大小,调整形状和拆分。...=True) vectorize()函数与 Python map()函数的 NumPy 等效。
intc:与 C 里的 int 相同,通常为 int32 或 int64。intp:用于索引,通常为 int32 或 int64。...介绍 在 python 内建对象中,数组有三种形式: list 列表:[1, 2, 3]Tuple 元组:(1, 2, 3, 4, 5)Dict 字典:{A:1, B:2} 其中,元组与列表相似,...python 标准类针对数组的处理局限于 1 维,并仅提供少量的功能。 ...3.2 从列表或元组转换 在 NumPy 中,我们使用 numpy.array 将列表或元组转换为 ndarray 数组。...numpy.random.standard_t(df,size):从具有 df 自由度的标准学生 t 分布中生成随机数。
这是大多数 Python 程序员都不习惯的。 尽管列表或字典的理解是相对于数组的,有时与数组的用法类似,但是在性能和操作上,列表/字典和数组之间还是存在巨大差异。...在许多方面,为 NumPy 数组建立索引与为列表或元组建立索引非常相似。 存在一些差异,随着我们的进行,这些差异将变得显而易见。...反转数组也类似于反转列表,例如x[::-1]。 数组的索引部分也称为数组的切片,它创建端口或整个数组的副本(我们将在后面的部分中介绍副本和视图) 。...例如,您可能具有datetime对象的列表,并且可能希望将其转换为用于算术或其他 NumPy 函数的numpy.datetime64。...,并且两个向量a与b的叉积由a x b表示: NumPy 为标准向量例程提供了前面的功能。
参见说明 索引 NumPy,与 Python 一样,数字从 0 开始索引;a[0] 是第一个元素。 MATLAB 的脚本语言是为了线性代数而创建的,因此一些数组操作的语法比 NumPy 更紧凑。...切片操作复制数组的部分。 NumPy 数组切片使用按引用传递的方式,不复制参数。切片操作是对数组的视图。 大致等效项 下表提供了一些常见 MATLAB 表达式的大致等效项。...注意,MATLAB 始终返回 2D 或更高维度的数组,而 NumPy 返回 0D 或更高维度的数组 注意事项 子矩阵:可以使用索引列表和 ix_ 命令对子矩阵进行赋值。...因此,为了使 NumPy 具有类似简洁的区间构造机制,创建了有点古怪的 r_ 对象。注意,r_ 不像函数或构造函数一样调用,而是使用方括号进行索引,这允许在参数中使用 Python 的切片语法。...请注意,MATLAB 始终返回 2D 或更高阶数组,而 NumPy 将返回 0D 或更高阶数组 注释 子矩阵: 可以使用ix_命令和索引列表对子矩阵进行赋值。
Python 列表不仅仅是列表 现在让我们考虑,当我们使用包含许多 Python 对象的 Python 数据结构时会发生什么。 Python 中的标准可变多元素容器就是列表。...我们将从别名为np的标准 NumPy 导入开始: import numpy as np 从 Python 列表创建数组 首先,我们可以使用np.array从 Python 列表创建数组: # 整数数组...np.array([1, 4, 2, 5, 3]) # array([1, 4, 2, 5, 3]) 请记住,与 Python 列表不同,NumPy 仅限于类型相同的数组。...2., 3., 4.], dtype=float32) 最后,与 Python 列表不同,NumPy 数组可以是显式多维的; 这是一种方法,使用列表的列表初始化多维数组: # 嵌套列表产生多维数组...or int64) intp 用于索引的整数(与 C ssize_t相同;通常是int32或int64) int8 字节(-128 到 127) int16 整数(-32768 到 32767) int32
等于shape的元素的乘积。 ndarray.dtype:数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。...数组的创建 直接python列表 [ ] 创建 >>> a = np.array([2,3,4]) >>> a array([2, 3, 4]) >>> a.dtype dtype('int32')...打印数组 NumPy以与嵌套列表类似的方式,具有以下布局: 最后一个轴从左到右打印, 倒数第二个从上到下打印, 其余的也从上到下打印,每个切片与下一个用空行分开。...索引、切片、迭代 一维数组可以被索引,切片和迭代,就像列出和其他Python序列一样。...NumPy也允许你使用三个点写为 b[i,...]。 三个点( ... )表示产生完整索引元组所需的冒号。例如,如果 x 是rank为的5数组(即,它具有5个轴),则 x[1,2,...]
教程内容分为向量 (一维数组)、矩阵 (二维数组)、三维与更高维数组3个部分。 Numpy数组与Python列表 在介绍正式内容之前,先让我们先来了解一下Numpy数组与Python列表的区别。...乍一看,NumPy数组类似于Python列表。它们都可以用作容器,具有获取(getting)和设置(setting)元素以及插入和移除元素的功能。...和Python列表相比,Numpy数组具有以下特点: 更紧凑,尤其是在一维以上的维度;向量化操作时比Python列表快,但在末尾添加元素比Python列表慢。 ?...△在末尾添加元素时,Python列表复杂度为O(1),NumPy复杂度为O(N) 向量运算 向量初始化 创建NumPy数组的一种方法是从Python列表直接转换,数组元素的类型与列表元素类型相同。...不过排序函数的功能比Python列表对应函数更少: ? 搜索向量中的元素 与Python列表相反,NumPy数组没有index方法。 ?
NumPy 数组和标准 Python 序列之间有几个重要区别: NumPy 数组在创建时具有固定大小,不像 Python 列表(可以动态增长)。...ndarray.dtype 描述数组中元素类型的对象。可以使用标准的 Python 类型创建或指定 dtype。另外,NumPy 提供了自己的类型。...例如,您可以使用array函数从常规 Python 列表或元组创建数组。结果数组的类型是从序列中的元素的类型推断出来的。...ndarray.dtype 描述数组中元素类型的对象。可以使用标准的 Python 类型创建或指定 dtype。此外,NumPy 还提供了自己的类型。...例如,您可以使用array函数从常规 Python 列表或元组创建数组。结果数组的类型是从序列中元素的类型推断出来的。
有时,并排比较不同的数据视图会很有帮助。为此,Matplotlib 具有子图的概念:可以在单个图形中一起存在的较小轴域分组。这些子图可能是插图,绘图网格或其他更复杂的布局。...正如我们之前看到的,默认情况下,这会创建一个填充整个图形的标准轴域对象。plt.axes也有一个可选参数,它是图坐标系中四个数字的列表。...为此,plt.subplots()是更容易使用的工具(注意subplots末尾的s)。 该函数不创建单个子图,而是在一行中创建完整的子图网格,并在 NumPy 数组中返回它们。...生成的轴域网格实例在 NumPy 数组中返回,允许使用标准数组索引表示法,方便地指定所需的轴域: # ax 是二维数组,由 [row, col] 索引 for i in range(2): for...()相比,plt.subplots()与 Python 传统的基于 0 的索引更加一致。
本系列内容覆盖到1维数组操作、2维数组操作、3维数组操作方法,本篇讲解Numpy与1维数组操作。 一、向量初始化 可以通过Python列表创建NumPy数组。...因此,通常的处理方式包括: 在变长Python列表中准备好数据,然后将其转换为NumPy数组 使用 np.zeros 或 np.empty 预先分配必要的空间(图中b) 通过图中(c)方法,可以创建一个与某一变量形状一致的空数组...如下是python列表和NumPy数组的对比: [67935bd86f8c8f90454d11e735e27e63.png] NumPy数组支持通过布尔索引获取数据,结合各种逻辑运算符可以有很高级的数据选择方式...是等效的,这样做只是为了避免 from numpy import * 时与Python around的冲突(但一般的使用方式是import numpy as np)。...四、查找向量中的元素 NumPy数组并没有Python列表中的索引方法,索引数据的对比如下: [1000f4644dcfd88382087f97b6425923.png] index()中的方括号表示
data.index # RangeIndex(start=0, stop=4, step=1) 与 NumPy 数组一样,可以通过熟悉的 Python 方括号表示法,按照相关索引访问数据: data...这种类型很重要:正如 NumPy 数组后面的特定于类型的编译代码,使其在某些操作方面,比 Python 列表更有效,PandasSeries``的类型信息使其比 Python 字典更有效。...与前一节中讨论的Series对象一样,DataFrame可以被认为是 NumPy 数组的扩展,也可以被认为是 Python 字典的特化。我们现在来看看这些观点。...作为扩展的 NumPy 数组的DataFrame 如果Series是具有灵活索引的一维数组的模拟,则DataFrame是具有灵活行索引和灵活列名的二维数组的模拟。...例如,我们可以使用标准的 Python 索引表示法来检索值或切片: ind[1] # 3 ind[::2] # Int64Index([2, 5, 11], dtype='int64') `Index
NumPy 副本和视图无复制视图或浅拷贝副本或深拷贝 Python append() 与深拷贝、浅拷贝深浅拷贝 NumPy 矩阵库(Matrix)matlib.empty()numpy.matlib.zeros...dtypendarray 的数据类型 NumPy 切片和索引 ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。 ...4x3 的二维数组与长为 3 的一维数组相加,等效于把数组 b 在二维上重复 4 次再运算 广播的规则: 让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。...它们基于 Python 内置库中的标准字符串函数。 这些函数在字符数组类(numpy.char)中定义。 ...需要注意的是数组必须具有相同的形状或符合数组广播规则。 此外 Numpy 也包含了其他重要的算术函数。
Numpy在导入的时候可以重命名 一般都是重命名成np Numpy的使用 Numpy生成数组 ndarray 一个ndarray是Python中NumPy库中的一个数据结构,用于存储和操作具有相同数据类型的多维数组...array生成数组 Numpy最重要的一个特点是其N维数组对象ndarray。 ndarray与列表形式上相似,但是ndarray要求数组内部的元素必须是相同的类型。...Series Series是Pandas中的一种数据结构,类似于一维的数组或列表。它由两个部分组成:索引和数据值。索引是Series中数据的标签,它可以是整数、字符串或其他数据类型。...DataFrame由多个Series组成,DataFrame可以类比为二维数组或者矩阵,但与之不同的是,DataFrame必须同时具有行索引和列索引,每列可以是不同的数据类型(整数、浮点数、字符串等)。...它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度提升,k均值和DBSCAN,并且旨在与Python数值科学库NumPy和SciPy联合使用。
1.2.Python 的列表不仅仅是一个列表 现在我们继续考虑当我们使用 Python 的数据结构来存储许多这样的 Python 对象时的情况。Python 中标准的可变多元素的容器集合就是列表。...2.2.数组索引:获取单个元素 如果我们熟悉 Python 列表的索引方式,那么 NumPy 数组的索引方式也是很相似的。...,你可以使用负的索引值: x1[-1] 9 x1[-2] 7 在多维数组中获取元素值,可以在中括号中使用一个索引值的元组: 多维数组的索引方式与列表的列表索引方式是不同的。...列表的列表在 Python 中需要使用多个中括号进行索引,如x[i][j]的方式。...Python 的列表不同,NumPy 数组是固定类型的。
译者:飞龙 协议:CC BY-NC-SA 4.0 Python 中的数据操作几乎与 NumPy 数组操作同义:即使是像 Pandas 这样的新工具也是围绕 NumPy 数组构建的。...数组索引:访问单个元素 如果你熟悉 Python 的标准列表索引,NumPy 中的索引将会非常眼熟。...Python 列表不同,NumPy 数组具有固定类型。...NumPy 切片语法遵循标准 Python 列表的语法;要访问数组x的切片,请使用: x[start:stop:step] 如果其中任何一个未指定,它们默认为start = 0,stop = 维度大小,...这是 NumPy 数组切片与 Python 列表切片的不同之处:在列表中,切片是副本。
领取专属 10元无门槛券
手把手带您无忧上云