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


猜你喜欢
- 一、Pytorch创建张量的4种方法Pytorch创建张量的4种方法主要有:torch.Tensor()、torch.tensor()、to
- 熬了半个通宵,写出了自己的Google SiteMap文件,在这里给出详细编写教程,愿对大家有所帮助。Google SiteMap的作用及协
- 0.object类源码class object: """ The most base type &
- python的numpy库集成了很多的函数。利用其中的函数可以很方便的解决一些数学问题。本篇介绍如何使用python的numpy来求解积分。
- 本文实例讲述了JavaScript实现点击按钮切换网页背景色的方法。分享给大家供大家参考,具体如下:这里演示JavaScript用按钮随意变
- 简单的2048小游戏不多说,直接上图,这里并未实现GUI之类的,需要的话,可自行实现:接下来就是代码模块,其中的2048游戏原来网络上有很多
- 看代码~from django.contrib import messages messages.info(request, '要显
- 本文实例讲述了原生JS实现Ajax通过GET方式与PHP进行交互操作。分享给大家供大家参考,具体如下:一、代码conn.php<?ph
- 因为有把python程序打包成exe的需求,所以,有了如下的代码import timeclass LoopOver(Exception):
- 1.nginx使用哪种网络协议? nginx是应用层 我觉得从下往上的话 传输层用的是tcp/ip 应用层用的是http fastcgi负责
- numpy矩阵数值太多不能全部显示,可以运行以下命令令全部数值展示出来np.set_printoptions(threshold='
- 问题我使用python 2.7和xlwt模块进行excel导出我想设置我知道可以使用的单元格的背景颜色style1 = xlwt.easyx
- 概述最近在一家公司实习,入职第一个大一点的需求是将公司开发的两个winstore app的排名信息进行可视化。大概挑选了下,排除了Flask
- <?php $monthoneday=date("Ym")."01"; $oneweekday
- 继续Mootools常用方法扩展,依然还是String类的扩展。方法:format说明:一个非常简单的format方法,和C#
- import siximport timeit#查找任何特定代码执行的确切时间from ecdsa.curves import curves
- 前话最近跟着廖雪峰的教程学到 模块 这一节。关于如何自定义一个模块,如果大家不懂的话先来看看基本的介绍:模块在计算机程序的开发过程中,随着程
- 演示技术栈这次用到了关于css的一些功能,和jQuery。CSS3中添加的新属性animation是用来为元素实现动画效果的,但是anima
- 图像可能在生成、传输或者采集过程中夹带了噪声,去噪声是图像处理中常用的手法。通常去噪声用滤波的方法,比如中值滤波、均值滤波。但是那样的算法不
- 一、安装首先根据自己的python版本下载pyqt4离线包,现在连接:https://www.lfd.uci.edu/~gohlke/pyt