python中ndarray数组的索引和切片的使用

作者:梧桐雪 时间:2022-10-12 13:49:55 

索引和切片相当于是对数组中内容的读(read)或者查询(inquiry)。是我们获取有用信息(demanded infomation)的重要方法。

对于索引

  • 对于1维数组:在数组名的后面用中括号[]包括索引编号,括号中填写所查询数组的编码。比如:data[1]

  • 对于n维数组:有两种方式

    • 第一种:用列表表示所查询数的坐标值,如data_2dim[1,0]

    • 第二种:把多维数组看成一位数组套娃,依次取值,如data_2dim[1][0]

对于切片

  • 对于1维数组:在数组名后加上中括号[],在括号中填写切片的范围,m:n注意这个式子用冒号作为分隔符,表示的意义是m≤index<n,如:data[2:4];特别要注意的是m和n如果省略了,则默认m=0,n=length(array),也就是说默认是第一位和最后一位。这个和matlab中的冒号表达式是不一样的。

  • 对于n维数组:把多维数组看成一位数组套娃,依次取值,要注意的是,多维数组的切片往往还是多维数组,如果需要得到具体某一个元素,则在切片之后还要进行索引操作。

可以在一下代码中演示索引和切片操作:

import numpy as np
data = np.array([0,1,2,3,4,5])
print(data[1])
print(data[2:4])

data_2dim = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(data_2dim[1,0])
print(data_2dim[1][0])
print(data_2dim[1:4])
print(data_2dim[1:4][1:3][1][2])

运行结果如下:

1
[2 3]
4
4
[[ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
12
[Finished in 1.3s]

总结一下,索引和切片都是对数组读的操作,都使用方括号[] (squre bracket)进行编号的框定。

特别要注意的是切片存放的变量和原来的数组变量在本质上共享同一片内存,如果修改了切片存放的变量,那么原来的数组的对应元素也会对应修改。如以下代码所示:

data = np.arange(10)
data_slice = data[3:6]
print(data)
print(data_slice)
data_slice[2] = 100
print(data)
print(data_slice)

结果如下所示:

[0 1 2 3 4 5 6 7 8 9]
[3 4 5]
[  0   1   2   3   4 100   6   7   8   9]
[  3   4 100]
[Finished in 2.2s]

如果需要在修改切片的同时不改变原来数组中的数据,可以使用.copy()方法。对上述代码稍作修改,结果如下:

data = np.arange(10)
data_slice = data[3:6].copy()
print(data)
print(data_slice)
data_slice[2] = 100
print(data)
print(data_slice)

[0 1 2 3 4 5 6 7 8 9]
[3 4 5]
[0 1 2 3 4 5 6 7 8 9]
[  3   4 100]
[Finished in 2.5s]

来源:https://blog.csdn.net/weixin_41855010/article/details/104235465

标签:python,ndarray,索引,切片
0
投稿

猜你喜欢

  • 谈切图优化加速图片显示—淘宝实例

    2008-01-30 12:24:00
  • 通过案例解析python鸭子类型相关原理

    2022-05-03 12:38:57
  • python计算导数并绘图的实例

    2023-01-19 21:16:51
  • python数据爬下来保存的位置

    2021-01-29 20:49:19
  • javascript 实现的完全兼容鼠标滚轴缩放图片的代码

    2024-04-10 16:09:43
  • python基于tkinter点击按钮实现图片的切换

    2022-03-18 10:22:31
  • Python pyecharts数据可视化实例详解

    2023-06-28 01:35:30
  • BootStrap3学习笔记(一)之网格系统

    2024-04-29 13:43:48
  • python爬虫自动创建文件夹的功能

    2023-11-05 08:22:40
  • js/jq仿window文件夹框选操作插件

    2024-04-16 09:50:23
  • 支持汉转拼和拼音分词的PHP中文工具类ChineseUtil

    2023-11-08 10:48:13
  • 给你选择Python语言实现机器学习算法的三大理由

    2023-08-20 23:10:26
  • Vue+Echarts实现简单折线图

    2024-05-29 22:42:25
  • Oracle 外连接实现代码

    2009-08-08 23:08:00
  • Active Server Pages 错误 ASP 0201 修复方法

    2011-03-06 10:41:00
  • Python3读取UTF-8文件及统计文件行数的方法

    2022-06-03 15:02:45
  • 使用Python制作一盏 3D 花灯喜迎元宵佳节

    2021-08-15 06:35:43
  • Python Matplotlib绘制扇形图标签重叠问题解决过程

    2022-06-27 05:22:48
  • JavaScript画圆

    2010-01-22 15:57:00
  • 使用Python脚本将Bing的每日图片作为桌面的教程

    2021-02-13 22:06:42
  • asp之家 网络编程 m.aspxhome.com