Python 获取指定范围索引的子数组
数组是一种同种数据类型的元素集合,用于存储一组元素。数组中的每个元素都通过键或索引值来识别。
子数组
子数组定义为数组的连续元素的一小部分。如果我们取一个包含5个整数元素的数组如下:
[9, 3, 1, 6, 9]
然后子数组将是 –
[9, 3]
[9, 3, 1]
[3, 1, 6, 9]
Python 中的数组
在 Python 中,我们没有一个特定的数据结构来表示数组。然而,我们可以使用 列表 来表示数组。
[1, 2, 3, 4, 5]
同时我们可以使用array或NumPy模块来处理Python中的数组。
一个由 array 模块定义的数组。
array('i', [1, 2, 3, 4])
array([1, 2, 3, 4])
上述所有数组都是从0开始索引到(n-1)。
在本文中,我们将看到多种方法来从一个数组中获取指定索引范围内的子数组。
输入输出场景
假设我们有一个包含9个整数值的输入数组。输出将是从索引1到4的子数组。
Input array:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Output:
[2, 3, 4]
主要我们将使用 Python 的 slicing 特性从数组中获取子数组。slicing 用于选择可迭代对象的一系列项。
语法
iterable_obj[start:stop:step]
使用列表切片
我们可以使用列表切片来获取子数组。以下是使用列表切片的语法:
list_object[start : end : step]
在这里:
- Start − 切片开始的索引。默认值为0。
-
End − 切片停止的索引。注意这个索引的值不包含在结果中。默认值是可迭代对象的长度。
-
Step − 默认值为1。递增起始索引的数字。
示例
从以下示例中,我们可以看到一个数组以及两个索引arr[1:7],用于从这些位置选择子数组。
# creating array
arr = [2, 5, 6, 7, 1, 9, 2, 0]
print ("The original array is: ", arr)
print()
# get the subarray
result = arr[1:7]
print ("The subarray is: ", result)
输出
The original array is: [2, 5, 6, 7, 1, 9, 2, 0]
The subarray is: [5, 6, 7, 1, 9, 2]
使用NumPy数组
在NumPy中,数组切片允许我们指定一系列索引,从更大的数组中获取子数组。NumPy数组的元素也像Python列表一样进行索引。第一个元素的索引为0,最后一个元素的索引为n-1。
语法
numpyArray[start : end]
在下面是一个示例:
- start − 切片操作开始的起始索引。
-
end − 切片操作结束的终止索引。
示例
以下是另一个示例 –
import numpy as np
# creating array
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print ("The original array is: ", arr)
print()
# get the subarray
result = arr[1:4]
print ("The subarray is: ", result)
输出
The original array is: [1, 2, 3, 4, 5, 6, 7, 8, 9]
The subarray is: [2, 3, 4]
我们成功地获取了一个子数组,从第1个索引开始到第4个索引(不包括最后一个第4个索引)。
使用数组模块
Python的数组模块也支持数组切片,这样我们就可以轻松地从一个大数组中获取子数组。以下是语法:
语法
array[start : end]
在这里,
- start - 数组切片开始的起始索引。
-
end - 数组切片结束的索引。
示例
在下面的示例中,我们成功地使用Python的array模块和切片技术从索引1-8获得了子数组。
import array
# creating array
arr = array.array('i',[1, 2, 3, 4, 5, 6, 7, 8, 9])
print ("The original array is: ", arr)
print()
# get the subarray
result = arr[1:8]
print ("The subarray is: ", result)
输出
The original array is: array('i', [1, 2, 3, 4, 5, 6, 7, 8, 9])
The subarray is: array('i', [2, 3, 4, 5, 6, 7, 8])