首页 > Python3教程 > Python扩展程序库 -- NumPy

NumPy 数组切片和索引

数组索引指的是使用方括号([])来索引数组值。

ndarray对象的内容通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。

ndarray 数组基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

import numpy as np

a = np.arange(10)

# 从索引 2 开始到索引 7 停止,间隔为2
s = slice(2, 7, 2)
print(a[s]) # [2 4 6]

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

import numpy as np

a = np.arange(10)

# 从索引 2 开始到索引 7 停止,间隔为 2
b = a[2:7:2]
print(b) # [2 4 6]

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

冒号 : 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。

如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。

import numpy as np

a = np.arange(10) # [0 1 2 3 4 5 6 7 8 9]

print(a[5]) # 5

print(a[2:]) # [2 3 4 5 6 7 8 9]

print(a[2:6]) # [2 3 4 5]

# 多维数组同样适用上述索引提取方法
b = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(b)
# [[1 2 3]
# [4 5 6]
# [7 8 9]]

# 从某个索引处开始切割
print(b[1:])
# [[4 5 6]
# [7 8 9]]

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

import numpy as np

a = np.array([[1, 6, 3], [6, 5, 1], [7, 6, 9]])

# 2列元素
print(a[..., 1]) # [6 5 6]

# 2行元素
print(a[1, ...]) # [6 5 1]

# 2列及剩下的所有元素
print(a[..., 1:])
# [[6 3]
# [5 1]
# [6 9]]
关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。