Python NumPy数组切片详解:X[:,0]、X[:,:,0]及多维索引用法

Dylan
Dylan
发布时间:2026-10-12| 2人浏览过
原创

本文深入解析Python中NumPy数组的切片操作,重点讲解二维数组X[:,0]、X[:,1]及X[:,m:n]的用法,以及三维矩阵X[:,:,0]、X[:,:,1]和X[:,:,m:n]的索引逻辑。通过具体代码实例展示各切片方式的数据提取结果,帮助开发者掌握高维数据处理技巧,适用于机器学习中的数据预处理场景。

在Python编程中,对数组和列表执行切片操作是极为常见的任务。尽管Python提供了丰富的内置函数来辅助切片,但掌握核心的索引化方式依然至关重要。本文旨在简明扼要地总结几种常用的数组索引与切片模式,期望能为读者的日常开发工作提供实质性的帮助。

列表的切片规则相对直观,此前已有专门文章详述,此处不再赘述。本文的核心焦点在于Python中Array(数组)对象的操作。在实际应用中,我们最常处理的是二维和三维矩阵,更高维度的数据处理逻辑与之类似,因此本文仅针对二维和三维场景进行具体讲解。

首先来看二维数组的切片语法X[:,0];

该操作的含义是提取二维数组中第一维(即所有行)的第0列数据。

接着分析X[:,1]

这表示提取二维数组中第一维(所有行)的第1列数据。

对于通用的区间切片X[:,m:n]

其作用是提取二维数组中从第m维(列)开始,到第n-1维(列)结束的所有数据,即左闭右开区间[m, n)。

接下来讨论三维矩阵的切片语法X[:,:,0]

该操作提取三维矩阵中前两个维度(所有行和列)的第0层数据。

对于X[:,:,1]

这表示提取三维矩阵中前两个维度(所有行和列)的第1层数据。

对于通用的三维区间切片X[:,:,m:n]

其功能是提取三维矩阵中从第m层开始,到第n-1层结束的所有数据,同样遵循左闭右开的区间规则。

上述纯文字描述可能略显抽象,下面将通过具体的Python代码实例来演示这些切片操作的实际效果,以便更直观地理解。

#!usr/bin/env python
#encoding:utf-8
from __future__ import division
 
'''
__Author__:沂水寒城
学习Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
'''
 
import numpy as np
 
def simple_test():
  '''
  简单的小实验
  '''
  data_list=[[1,2,3],[1,2,1],[3,4,5],[4,5,6],[5,6,7],[6,7,8],[6,7,9],[0,4,7],[4,6,0],[2,9,1],[5,8,7],[9,7,8],[3,7,9]]
  # data_list.toarray()
  data_list=np.array(data_list)
  print 'X[:,0]结果输出为:'
  print data_list[:,0] 
  print 'X[:,1]结果输出为:'
  print data_list[:,1]
  print 'X[:,m:n]结果输出为:'
  print data_list[:,0:1]
  data_list=[[[1,2],[1,0],[3,4],[7,9],[4,0]],[[1,4],[1,5],[3,6],[8,9],[5,0]],[[8,2],[1,8],[3,5],[7,3],[4,6]],
        [[1,1],[1,2],[3,5],[7,6],[7,8]],[[9,2],[1,3],[3,5],[7,67],[4,4]],[[8,2],[1,9],[3,43],[7,3],[43,0]],
        [[1,22],[1,2],[3,42],[7,29],[4,20]],[[1,5],[1,20],[3,24],[17,9],[4,10]],[[11,2],[1,110],[3,14],[7,4],[4,2]]]
  data_list=np.array(data_list)
  print 'X[:,:,0]结果输出为:'
  print data_list[:,:,0] 
  print 'X[:,:,1]结果输出为:'
  print data_list[:,:,1]
  print 'X[:,:,m:n]结果输出为:'
  print data_list[:,:,0:1]
 
 
if __name__ == '__main__':
  simple_test()

运行上述代码后,得到的输出结果如下所示:

X[:,0]结果输出为: [1 1 3 4 5 6 6 0 4 2 5 9 3] X[:,1]结果输出为: [2 2 4 5 6 7 7 4 6 9 8 7 7] X[:,m:n]结果输出为: [[1] [1] [3] [4] [5] [6] [6] [0] [4] [2] [5] [9] [3]] X[:,:,0]结果输出为: [[ 1 1 3 7 4] [ 1 1 3 8 5] [ 8 1 3 7 4] [ 1 1 3 7 7] [ 9 1 3 7 4] [ 8 1 3 7 43] [ 1 1 3 7 4] [ 1 1 3 17 4] [11 1 3 7 4]] X[:,:,1]结果输出为: [[ 2 0 4 9 0] [ 4 5 6 9 0] [ 2 8 5 3 6] [ 1 2 5 6 8] [ 2 3 5 67 4] [ 2 9 43 3 0] [ 22 2 42 29 20] [ 5 20 24 9 10] [ 2 110 14 4 2]] X[:,:,m:n]结果输出为: [[[ 1] [ 1] [ 3] [ 7] [ 4]] [[ 1] [ 1] [ 3] [ 8] [ 5]] [[ 8] [ 1] [ 3] [ 7] [ 4]] [[ 1] [ 1] [ 3] [ 7] [ 7]] [[ 9] [ 1] [ 3] [ 7] [ 4]] [[ 8] [ 1] [ 3] [ 7] [43]] [[ 1] [ 1] [ 3] [ 7] [ 4]] [[ 1] [ 1] [ 3] [17] [ 4]] [[11] [ 1] [ 3] [ 7] [ 4]]] [Finished in 0.6s]

通过实例可以看出,这种切片方式非常便捷。特此记录此笔记,欢迎读者交流探讨。

以上就是本文的全部内容,希望这些关于Python数组切片的解析能对各位的学习和工作有所帮助,也欢迎大家继续支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。