NumPy 教程

NumPy 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/numpy-indexing-and-slicing.html

NumPy切片和索引


ndarray对象的内容可以通过索引或切片来访问和修改,就像 Python 的内置容器对象一样。

如前所述,ndarray对象中的元素遵循基于零的索引。有三种可用的索引方法类型: 字段访问,基本切片高级索引

基本切片是 Python 中基本切片概念到 n 维的扩展。通过将startstopstep参数提供给内置的slice函数来构造一个 Python slice对象。此slice对象被传递给数组来提取数组的一部分。

示例 1

import numpy as np
a = np.arange(10)
s = slice(2,7,2)  
print a[s]

输出如下:

[2  4  6]

在上面的例子中,ndarray对象由arange()函数创建。然后,分别用起始,终止和步长值272定义切片对象。当这个切片对象传递给ndarray时,会对它的一部分进行切片,从索引27,步长为2

通过将由冒号分隔的切片参数(start:stop:step)直接提供给ndarray对象,也可以获得相同的结果。

示例 2

import numpy as np
a = np.arange(10)
b = a[2:7:2]  
print b

输出如下:

[2  4  6]

如果只输入一个参数,则将返回与索引对应的单个项目。如果使用a:,则从该索引向后的所有项目将被提取。如果使用两个参数(以:分隔),则对两个索引(不包括停止索引)之间的元素以默认步骤进行切片。

示例 3

# 对单个元素进行切片  
import numpy as np

a = np.arange(10)
b = a[5]  
print b

输出如下:

5

示例 4

# 对始于索引的元素进行切片  
import numpy as np
a = np.arange(10)  
print a[2:]

输出如下:

[2  3  4  5  6  7  8  9]

示例 5

# 对索引之间的元素进行切片  
import numpy as np
a = np.arange(10)  
print a[2:5]

输出如下:

[2  3  4]

上面的描述也可用于多维ndarray

示例 6

import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print a
# 对始于索引的元素进行切片  
print  '现在我们从索引 a[1:] 开始对数组切片'  
print a[1:]

输出如下:

[[1 2 3]
 [3 4 5]
 [4 5 6]]

现在我们从索引 a[1:] 开始对数组切片
[[3 4 5]
 [4 5 6]]

切片还可以包括省略号(...),来使选择元组的长度与数组的维度相同。如果在行位置使用省略号,它将返回包含行中元素的ndarray

示例 7

# 最开始的数组  
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print  '我们的数组是:'  
print a
print  '\n'  
# 这会返回第二列元素的数组:  
print  '第二列的元素是:'  
print a[...,1]  
print  '\n'  
# 现在我们从第二行切片所有元素:  
print  '第二行的元素是:'  
print a[1,...]  
print  '\n'  
# 现在我们从第二列向后切片所有元素:
print  '第二列及其剩余元素是:'  
print a[...,1:]

输出如下:

我们的数组是:
[[1 2 3]
 [3 4 5]
 [4 5 6]]

第二列的元素是:
[2 4 5]

第二行的元素是:
[3 4 5]

第二列及其剩余元素是:
[[2 3]
 [4 5]
 [5 6]]

有多种方式可以实现列表切片,我将为您介绍以下几种方式,并对它们进行总结比较:###方式1:切片运算符这是Python中最常见的方式,使用切片 ...
如果一个ndarray是非元组序列,数据类型为整数或布尔值的ndarray,或者至少一个元素为序列对象的元组,我们就能够用它来索引ndarr ...
索引是存储和组织数据的物理容器,而别名是索引的可引用名称,允许您在不更改应用程序代码的情况下进行灵活的数据管理。数据分片管理:当您需要更改索 ...
在本章中,我们将讨论如何切割和丢弃日期,并获取Pandas中大对象的子集。 ...
标准的 Python 发行版不会与 NumPy 模块捆绑在一起。一个轻量级的替代方法是使用流行的 Python 包安装程序 pip 来安装 ...