NumPy基础-索引

本文详细介绍了NumPy数组的索引机制,包括单个元素、多维数组、布尔和掩码索引,以及切片和步进。强调了索引数组的使用,以及在多维数组中如何进行索引操作,特别提到了广播机制和布尔数组在索引中的应用。还讨论了向索引数组赋值的规则和特殊情况,以及如何处理可变数量的索引。
摘要由CSDN通过智能技术生成

数组索引是指使用方括号([])来索引数组值。索引有很多选项,这给NumPy提供了强大的索引功能,但是强大的功能也带来了一些复杂性和潜在的混乱。

单个元素的索引

一维数组的单元素索引是我们所期望的,它的工作方式与其他标准Python序列完全相同。它基于0,并且接受复索引以数组末尾开始索引。
在这里插入图片描述
与列表和元组不同,numpy数组支持多维数组的多维索引。这意味着不必将每个维度的索引都分成自己的一组方括号。
在这里插入图片描述
这里我们要注意,如果索引一个多维数组的索引比维数少,则将获得一个多维数组。例如:
在这里插入图片描述
也就是说,指定的每个索引都会选择与所选维度的其余部分相对应的数组。在上面的示例中,选择0表示长度5的剩余维未指定,返回的是该维和大小的数组。必须注意,返回的数组不是原始数组的副本,而是指向内存中与原始数组相同的值。在这种情况下,将返回第一个位置(0)的一维数组。因此,在返回的数组上使用单个索引会导致返回单个元素。例如:
在这里插入图片描述
因此请注意,尽管第二种情况的效率较低,因为在第一个索引之后创建了一个新的临时数组,随后将其索引为2。(x[0,2]=x[0][2])
我们要注意那些用于IDL或Fortran内存顺序的索引,因为它们与索引有关。NumPy使用C顺序索引。这意味着最后一个索引通常代表变化最快的内存位置,这与Fortran或IDL不同,在Fortran或IDL中,第一个索引代表内存中变化最快的位置。这种差异代表了很大的混淆可能性。

其它索引选项

可以对数组进行切片和步进以提取相同数量的维,但数组大小与原始数组不同。切片和步进的工作方式与列表和元组完全相同,只是它们也可以应用于多个维度。例如:
在这里插入图片描述
数组切片不会复制内部数组数据,只会生成原始数据的新视图。这与列表或元组切片不同,copy()如果不再需要原始数据,则建议使用显示切片。
为了从数组中选择值列表到新数组中,可以将数组与其他数组索引。有两种不同的方法可以实现这一点:其一是使用一个或多个索引值数组,其二是给出一个正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值