2023-12-20 15:27:49 | 我爱编程网
在 Python 中,可以使用 enumerate() 函数同时获取列表中元素的值和对应的下标。
例如:
fruits = ['apple', 'banana', 'orange']for index, fruit in enumerate(fruits): print(f"The index of {fruit} is {index}")
打印结果
The index of apple is 0
The index of banana is 1
The index of orange is 2我爱编程网
目录
本文所使用的Numpy版本为: Version: 1.20.3 。基于Python和C++开发的Numpy一般被认为是Python中最好的Matlab替代品,其中最常见的就是各种Numpy矩阵类型的运算。对于矩阵的运算而言,取对轴和元素是至关重要的,这里我们来看看一些常见的Numpy下标取法和标记。
这里我们定义一个4*4的矩阵用于取下标,为了方便理解,这个矩阵中所有的元素都是不一样的:
比如我们想取第一行的所有元素,那么就是x[0],如果想取第一行的第一列的元素,那么就是x[0][0],而在numpy中为了简化,可以讲x[0][0]写成x[0,0]的形式:
在上一个章节中我们提到的取单个元素x[0,0]的方法,其实本质上等同于x[(0,0)],也就是一个tuple的格式,但是如果把这里的tuple格式换成list,所表示的含义和得到的结果是完全不一样的:
这里list格式的id,代表的意思是分别取第二行和第二行的内容,再放到一个完整的矩阵中。如果id设置为[1,2]的话,就是分别取第二行和第三行,而不是取第二行的第二个元素。如果需要取第二行的第二列的元素,那么还是需要用tuple的格式来取下标。有一个比较有意思的点是,如果把刚才的下标重复输入两次,也就是x[[1,2],[1,2]]的话,所表示的含义是分别取x[1][1]和x[2][2],再放到同一个矩阵中,也是一种比较常用的分离式取下标的方法。
在Numpy的下标中,冒号和后置逗号同时出现,表示轴向全取,比如x[0,:]表示取x的第一行的所有数据,x[:,0]表示取第一列的所有数据:
虽然上文我们提到,如果下标被定义成一个list格式的话,就表示分别取。但是目前Numpy的实现中还有这样的一个遗留问题,就是使用多维的list格式取下标,会自动将最外层转化成tuple的格式,采用tuple的取法。虽然计算时会给出告警,但是目前来说也需要引起一定的注意。
在Numpy中冒号不与后置逗号同时出现时,表示的含义是从冒号前的元素取值到冒号后的元素,比如x[0:3]所表示的元素是[x[0],x[1],x[2]]。如果是两个冒号连用中间没有逗号的话,比如x[0:3:2],表示的是每隔2个元素取一个,最后得到的应该是[x[0],x[2]]。还有一种非常常见的操作是取[::-1]这样的下标,所表示的含义就是对当前轴进行倒序。
虽然在Numpy中有broadcast和expand_dim之类的函数可以对矩阵进行扩维或者是广播,但是更方便的操作是对需要扩展的维度取一个None的下标,比如要把一个(4,4)大小的矩阵扩展成(1,4,4),那么就对下标取[None,:]或者[None,:,:]即可。而如果需要把(4,4)变成(4,1,4),那就需要把None换个位置为[:,None,:]就可以实现:
在高维矩阵中,因为没有了行和列这样的概念,因此需要从轴上去理解相关操作,我们先定义一个简单的三维张量:
常规的操作其实都跟前面章节中介绍二维张量一致,这里我们考虑一种比较特殊的场景。就是如果同样用二维矩阵的取法去取,只是第一条轴每个元素取一个id,比如取第0条轴的[0,1]元素和第1条轴的[2,3]元素,那么其实最简单的方案就是在第一个下标的位置加上一个位置元素,这个位置元素用下标id的第一个轴的长度去定义即可:
这篇文章的主要内容是梳理在Numpy中经常用到的各种取下标的操作,包括但不限于取指定轴的所有元素、取指定位置的单个元素、取指定位置的多个元素、扩维以及取未显式给定位置的多个元素等等。比较重要的是在Numpy中tuple的取法和list的取法是代表不一样的含义,并且由于 历史 原因,Numpy中存在一些list取法和numpy.array的取法表示不一致的地方,在本文中进行了总结。
本文首发链接为:
作者ID:DechinPhy
更多原著文章请参考:
打赏专用链接:
腾讯云专栏同步:
我爱编程网(https://www.52biancheng.com)小编还为大家带来python怎么设置list的下标从1开始的相关内容。
因为在运行python脚本的时候你没在后面添加一个值。sys.argv[1]意思是取位置第二的参数。位置第一的是py名字,第二的参数你没有输入,所以取不到,所以报错out of range。
你执行的时候一般是这样的:python xxx.py A 其中xxx是程序名字,即sys.argv[0]的位置。A是参数,即sys.argv[1]取的位置。必须有这个A才行,要不然sys.argv[1]取不到值肯定报错
pythonnumpy怎么按列获取数据Numpy可以使用reshape()函数进行矩阵重排列,默认按行排列(C语言风格),通过修改order参数可以改为按列排列(Fortran风格)。参考例子:In[1]:importnumpyasnpIn[2]:a=np.array([[1,2,3],[4,5,6]])In[3]:printa[[123][456]]...python进行数据库查询时怎
python3怎么创建列表?Python3是一种流行的编程语言,您在一行开头看到的表示此行是您可以在Python3解释器中输入的命令。>>>您提供的代码在以开头的行上没有完整的语句,因此无法确定此代码的结果是什么。但是,如果代码是完整的,它可能会创建一个新的列表对象,并为其分配一些值。>>>list2=list2下面是如何使用Python3解
php怎么取出一组数组中每个下标下的最后一个元素数组指针函数current()-返回数组中的当前单元end()-将数组的内部指针指向最后一个单元prev()-将数组的内部指针倒回一位reset()-将数组的内部指针指向第一个单元each()-返回数组中当前的键/值对并将数组指针向前移动一步next()-将数组中的内部
怎么用php正则获得a标签内的文字啊php中正则匹配只要使用这两个函数:preg_match_allpreg_match这里使用preg_match_all,代码如下:$subject = '<a href="xxx.php">abc测试</a>'; // 假设这是需要匹配的字符串$pattern = '/<a href="[^"]
PHP怎么获取字符串长度?PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:(1)PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节;(2)中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的
python如何用分割符把字符串变列表?str[0].split(".")#str[0]取出第一个字符串,然后利用split()函数,用分隔符"."将字符串变为列表。str[0].split(",")#用分隔符","将字符串变为列表。str[0].split("")#用分隔符""(空格),将字符串变为列表。在一行上写多条python语句用什么分割python一行写多条语句
在PHP中,怎样获取连接中的函数值?使用$_GET来获取值是最好的选择,同楼上两位所说的一致的。在02.php这个文件中加入以下内容:$id=$_GET['id']。这样你传过去的值就可以使用了,或者直接使用$_GET['id']也可以,但这样不安全。在一个网站,使用URL传过去的值一定要处理后再使用。这样是为了安全考虑,特别是传的值还会用在一些涉及数据库或是其它可执行语句的
php禁用函数删除后还是提示运行动态加载的扩展、安全模式(SafeMode)、.user.ini文件等原因。1、动态加载的扩展:某些PHP扩展是动态加载的,不会在php.ini文件中列出。这意味着修改php.ini文件对它们无效。这些扩展可以在运行时被加载,其函数仍然可用。请检查是否有其他配置文件(如conf.d目录下)包含了启用该函数或相关功能所需的设置。2、安全模式(Safe
2025-02-01 20:24:39
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01
2024-09-10 08:50:00