Task02:索引 numpy

副本与视图

在 Numpy 中,尤其是在做数组运算或数组操作时,返回结果不是数组的 副本 就是 视图。

在 Numpy 中,所有赋值运算不会为数组和数组中的任何元素创建副本。
numpy.ndarray.copy() 函数创建一个副本。 对副本数据进行修改,不会影响到原始数据,它们物理内存不在同一位置。

有关数组的例子
e.g1
一维数组
在这里插入图片描述
可以看出,使用y=x.copy()后,不影响x的值。
数组切片操作返回的对象只是原数组的视图。
e.g2
二维数组
在这里插入图片描述
::2 表示:start stop step
切片

索引与切片
数组索引机制指的是用方括号([])加序号的形式引用单个数组元素,它的用处很多,比如抽取元素,选取数组的几个元素,甚至为其赋一个新值。
要获取数组的单个元素,指定元素的索引即可。

整数索引
在这里插入图片描述

计算机算数是从0开始的
x[2][1]是指从0开始的第2个数组的序数为1的数。

切片索引
切片操作是指抽取数组的一部分元素生成新数组。对 python 列表进行切片操作得到的数组是原数组的副本,而对 Numpy 数据进行切片操作得到的数组则是指向相同缓冲区的视图。
想抽取(或查看)数组的一部分,必须使用切片语法,也就是,把几个用冒号( start:stop:step )隔开的数字置于方括号内。

要更好地理解切片语法,还应该了解不明确指明起始和结束位置的情况。如省去第一个数字,numpy 会认为第一个数字是0;如省去第二个数字,numpy 则会认为第二个数字是数组的最大索引值;如省去最后一个数字,它将会被理解为1,也就是抽取所有元素而不再考虑间隔。
即start stop step 的考虑
一维数组
在这里插入图片描述
x[0:2]:选序号为0 1的数组
x[1:5:2]:步长为2
x[:]:就是x
x[::-1]:reverse 逆过来 翻转数组

二维数组

在这里插入图片描述
通过对每个以逗号分隔的维度执行单独的切片,可以对多维数组进行切片。因此,对于二维数组,第一片定义了行的切片,第二片定义了列的切片。即,x[a:b:c:,x:y:z],逗号前是第一片的切片,逗号后是第二片的切片。
在这里插入图片描述
dots 索引
NumPy 允许使用…表示足够多的冒号来构建完整的索引列表。

比如,如果 x 是 5 维数组:

x[1,2,…] 等于 x[1,2,:,:,:]
x[…,3] 等于 x[:,:,:,:,3]
x[4,…,5,:] 等于 x[4,:,:,5,:]

整数数组索引
【例】方括号内传入多个索引值,可以同时选择多个元素。
对于一维数组:
在这里插入图片描述
对于二维数组:
在这里插入图片描述
对于二维数组,列的切片和行的切片
在这里插入图片描述
这里的点是(0,2) (1,3) (2,4)一一对应
在这里插入图片描述
空 对角线

可以借助切片:与整数数组组合。
在这里插入图片描述
numpy. take(a, indices, axis=None, out=None, mode=‘raise’) Take elements from an array along an axis.
一维数组:可以使用np.take(x,r),若axis=0, 也可以使用x[r]
在这里插入图片描述
在这里插入图片描述
axis=0:对应行向量方向 可以和
axis=1:对应列向量方向

在这里插入图片描述
注意:使用np.take()时,若不指定axis,则降为一维,再取数。
使用切片索引到numpy数组时,生成的数组视图将始终是原始数组的子数组, 但是整数数组索引,不是其子数组,是形成新的数组。

在这里插入图片描述
在这里插入图片描述

布尔索引
我们可以通过一个布尔数组来索引目标数组。
在这里插入图片描述
numpy.logical_not(逻辑非)
numpy.logical_or(逻辑或)
numpy.logical_and(逻辑与)
在这里插入图片描述

数组迭代
除了for循环,Numpy 还提供另外一种更为优雅的遍历方法。
apply_along_axis(func1d, axis, arr) Apply a function to 1-D slices along the given axis.

1.函数原型
numpy.apply_along_axis(func, axis, arr, *args, **kwargs)

2.作用:
将arr数组的每一个元素经过func函数变换形成的一个新数组

3.参数介绍:
其中func,axis,arr是必选的
func是我们写的一个函数
axis表示函数func对arr是作用于行还是列
arr便是我们要进行操作的数组了
可选参数:*args, **kwargs。都是func()函数额外的参数。

e.g
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值