Python 教程

21.2 数组索引、切片与形状操作

Python数组索引、切片与形状操作教程 | 新手入门指南

Python 教程

本教程详细介绍Python中数组索引、切片和形状操作的基础知识,使用NumPy示例,适合新手学习,帮助快速掌握数组处理技巧。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

Python数组索引、切片与形状操作教程

简介

在Python中,数组是一种重要的数据结构,尤其在数据科学和机器学习中,NumPy库提供了高效的数组操作。学习数组索引、切片和形状操作是掌握Python数据处理的基础。本教程适合新手,通过简单示例帮助您快速上手。

数组索引

索引用于访问数组中的单个元素。Python数组索引从0开始,即第一个元素的索引为0。

正向索引

正向索引从数组开头开始计数。例如,在数组arr = [10, 20, 30, 40, 50]中:

  • arr[0] 访问第一个元素:10
  • arr[2] 访问第三个元素:30

负向索引

负向索引从数组末尾开始计数,-1表示最后一个元素。例如:

  • arr[-1] 访问最后一个元素:50
  • arr[-3] 访问倒数第三个元素:30

切片操作

切片允许访问数组的一个子集,语法为 arr[start:stop:step],其中:

  • start:起始索引(包含),默认为0
  • stop:结束索引(不包含),默认为数组长度
  • step:步长,默认为1

示例

使用Python列表(类似数组)演示:

arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 切片基本示例
print(arr[2:5])    # 输出: [2, 3, 4](从索引2到5-1)
print(arr[:4])     # 输出: [0, 1, 2, 3](从开头到索引4-1)
print(arr[6:])     # 输出: [6, 7, 8, 9](从索引6到结尾)

# 使用步长
print(arr[::2])    # 输出: [0, 2, 4, 6, 8](每两步取一个元素)
print(arr[1::3])   # 输出: [1, 4, 7](从索引1开始,每三步)

切片也适用于NumPy数组,操作类似。

形状操作

在NumPy中,数组形状(shape)是指数组的维度大小。形状操作是调整数组维度的关键,常用于数据处理。

形状概念

使用NumPy数组作为示例:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])  # 2x3二维数组
print(arr.shape)  # 输出: (2, 3) 表示2行3列

重塑数组

重塑(reshape)改变数组的形状而不改变数据。使用reshape()方法。

arr = np.array([1, 2, 3, 4, 5, 6])
reshaped_arr = arr.reshape(2, 3)  # 重塑为2x3数组
print(reshaped_arr)
# 输出:
# [[1 2 3]
#  [4 5 6]]

重塑时,新形状的总元素数必须与原数组相同(例如,这里6个元素)。

展平数组

展平(flatten)将多维数组转换为一维数组。

  • flatten():返回一个新数组的展平副本。
  • ravel():返回数组的展平视图(可能修改原数组)。
arr = np.array([[1, 2, 3], [4, 5, 6]])
flat_arr = arr.flatten()  # 或 arr.ravel()
print(flat_arr)  # 输出: [1 2 3 4 5 6]

综合示例

结合索引、切片和形状操作,处理NumPy数组。

import numpy as np

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

# 索引访问
print(arr[1, 2])  # 输出: 6(第二行第三列)

# 切片获取子数组
print(arr[:2, 1:])  # 输出前两行、后两列
# 输出:
# [[2 3]
#  [5 6]]

# 重塑数组
reshaped = arr.reshape(1, 9)  # 重塑为1x9数组
print(reshaped)  # 输出: [[1 2 3 4 5 6 7 8 9]]

# 展平数组
flat = arr.flatten()
print(flat)  # 输出: [1 2 3 4 5 6 7 8 9]

总结

  • 数组索引:使用索引访问单个元素,从0开始,支持负向索引。
  • 切片操作:使用start:stop:step语法访问子数组,灵活高效。
  • 形状操作:在NumPy中,形状操作如重塑和展平,帮助调整数组维度,适应数据处理需求。

掌握这些基础操作后,您能更好地处理数组数据,为进一步学习数据分析或机器学习打下基础。实践是学习的关键,建议多尝试代码示例以加深理解。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包