无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(python数组切片) 详解NumPy中数组的索引和切片(访问元素) NumPy 数组索引和切片 全网首发(图文详解1)

前沿技术 Micheal 4个月前 (06-03) 47次浏览 已收录 扫描二维码

(python数组切片) 详解NumPy中数组的索引和切片(访问元素)

NumPy是一个强大的Python库,主要用于进行高性能科学计算和数据分析。它提供了一个高效的多维数组对象ndarray。在NumPy中,数组的索引和切片用于访问、修改、操作数组中的特定元素、子数组或部分。

索引

数组索引是通过在方括号中指定索引号来访问数组中的特定元素。在NumPy数组中,索引通常是从0开始的。

假设我们定义了以下一维数组:

import numpy as np

# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5])

访问第三个元素(索引为2):

print(arr[2])  # 输出: 3

值得注意的是,在多维数组中,可以通过多个索引来访问元素,一般通过逗号分隔:

# 创建一个二维数组
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 访问第二行第三列的元素(行索引为1,列索引为2)
print(arr_2d[1, 2])  # 输出: 6

切片

切片用于访问数组的一部分子集。它通常使用冒号:来指定开始索引、结束索引和步长。

继续使用上面的一维数组:

# 使用切片获取从索引1到索引3(不包括)的元素
slice_of_arr = arr[1:3]
print(slice_of_arr)  # 输出: [2 3]

在二维数组中,可以对每个维度分别使用切片:

# 获取第一列的所有元素
col1 = arr_2d[:, 1]
print(col1)  # 输出: [2 5 8]

# 获取第二行的元素
row2 = arr_2d[1, :]
print(row2)  # 输出: [4 5 6]

可以在切片中使用步长,例如:

# 从一维数组中获取每隔一个元素的切片
every_other = arr[::2]
print(every_other)  # 输出: [1 3 5]

常用技巧

  • 使用-1索引可以访问数组的最后一个元素。
  • 如果在切片中省略了开始索引,将从数组的开始处开始;如果省略了结束索引,将一直到数组的结尾。
  • 切片得到的新数组是原始数组的一个视图,修改视图中的数据会影响原始数组。

示例代码

这里是一个简单的示例,演示了上面介绍的概念:

import numpy as np

# 创建一个二维数组
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 访问单个元素
print("单个元素:", arr_2d[1][2])

# 访问多个元素(行或列的切片)
print("第二列:", arr_2d[:, 1])
print("第三列每隔一行:", arr_2d[::2, 2])

# 切片和索引结合使用
print("中心2x2方阵:", arr_2d[0:2, 1:3])

当你运行以上代码时,你将看到数组中不同部分的例子和切片的结果。

NumPy的数组索引和切片是一个很基础但又非常强大的功能,通过以上的介绍和示例,希望你已经了解了如何在实践中应用它们了。
(python sys.argv) 详解sys.argv(获取命令行参数)属性的使用方法 标题:Python 命令行参数列表 sys.argv 全网首发(图文详解1)
(ping ipv6) 详解Linux ping6命令:测试 IPv6 网络连接 Linux IPv6网络连接状况测试 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝