numpy数组的索引和切片
1.一维数组的索引和切片
ndarray对象的内容可以通过索引或切片来访问和修改,与Python中 list 的切
片操作一样。ndarray数组可以基于0-n的下标进行索引
区别在于:数组切片是原始数组视图(这就意味着,如果做任何修改,原始都会跟
着更改)。这也意味着,如果不想更改原始数组,我们
需要进行显式的复制,从而得到它的副本(.copy0)).
冒号分隔切片参数[start:stop:step]

2.二维数组的切片和索引:下标都是从0开始的,倒着从-1开始

切片还可以使用省略号“...”,如果在行位置使用省略号,那么返回值将包含所有行元素,反之,则包含使用列的元素

3.索引的高级操作




4.布尔数组索引
当输出的结果需要经过布尔运算(如比较运算)时,此时会使用到另一种高级索引方式,即布尔数组索引。下面示例返回数组中大于6的的所有元素:


筛选出指定区间内数据
& 和 | 或

布尔索引实现的是通过一维数组中的每个元素的布尔型数值对一个与一维数组有着同样行数或列数的矩阵进行符合匹配。种作用,其实是把一维数组中布尔值为True的相应行或列给抽取了出来
(注意:一维数组的长度必须和想要切片的维度或轴的长度一致)。

是因为所选索引形状不匹配:索引数组无法与该形状一起广播。当访问numpy多维数组时,用于索引的数组需要具有相同的形状(行和列)。numpy将有可能去广播,所以,若要为了实现不同维度的选择,可分两步对数组进行选择。
1.例如我需要选择第1行和最后一行的第1,3,4列时,先选择行,再选择列。
⒉先读取数组a3_4的第一行和最后一行,保存到temp,然后再筛选相应的列即可

5.广播机制
广播(Broadcast)是numpy对不同形状(shape)的数组进行数值计算的方式,对数组的算术运算通常在相应的元素上进行。
如果两个数组a和b形状相同,即满足a.shape == b.shape,那么ab的结果就是a与b数组对应位相乘。这要求维数相同,且各维度的长度相同。

NumPy 设计了一种广播机制,这种机制的核心是对形状较小的数组,在横向或纵向上进行一定次数的重复,使其与形状较大的数组拥有相同的维度。

广播的规则:
让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加1补齐。
输出数组的形状是输入数组形状的各个维度上的最大值。
如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。
当输入数组的某个维度的长度为1时,沿着此维度运算时都用此维度上的第一组值。
对于广播规则另一种简单理解:
将两个数组的维度大小右对齐,然后比较对应维度上的数值,
如果数值相等或其中有一个为1或者为空,则能进行广播运算,
输出的维度大小为取数值大的数值。否则不能进行数组运算。

6.小练习

作者:Ambitious
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!

浙公网安备 33010602011771号