【NumPy基础:数组和矢量计算(三)】【切片索引+布尔型索引+花式索引+数组转置和轴对换+元素级数组函数+利用数组进行数据处理】

上一篇:【NumPy基础:数组和矢量计算(二)】【Numpy数组的基本运算+索引和切片】

切片索引

ndarray的切片语法跟Python列表这样的一维对象类似
在这里插入图片描述

=====================================

对于二维数组其切片方式稍微不同

在这里插入图片描述
切片是沿着一个轴向选取元素的。
表达式arr2d[:2]可以被认为是“选取arr2d的前两行”。

=====================================
在这里插入图片描述
也可以一次传入多个切片,进行切片时,只能得到相同维数的数组视图。

=====================================

通过将整数索引和切片混合,可以得到低维度的切片。
只有冒号表示选取整个轴
在这里插入图片描述

=====================================

对切片表达式的赋值操作也会被扩散到整个选区
在这里插入图片描述

布尔型索引

在这里插入图片描述
每个名字都对应data数组中的一行,选出对应于名字"zhao"的所有行。进行数组的比较运算,其也是矢量化对names和字符串"Bob"的比较运算将会产生一个布尔型数组

=====================================
在这里插入图片描述
这个布尔型数组可用于数组索引

=====================================在这里插入图片描述
布尔型数组的长度必须跟被索引的轴长度一致
如果布尔型数组的长度不对,布尔型选择就会出错,影响后面的结果。

=====================================
还可以在此基础上索引列
在这里插入图片描述
在这里插入图片描述

=====================================
选择除"zhao"以外的其他值,既可以使用不等于符号(!=),也可以通过~对条件进行否定
在这里插入图片描述

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

=====================================
需要组合应用多个布尔条件,使用&(和)、|(或)之类的布尔算术运算符
Python关键字and和or在布尔型数组中无效。要使用&与|。
在这里插入图片描述

=====================================
布尔型数组设置值是一种经常用到的手段
在这里插入图片描述

花式索引

花式索引(Fancy indexing)是一个NumPy术语,它指的是利用整数数组进行索引

在这里插入图片描述

=====================================

以特定顺序选取行子集,只需传入一个用于指定顺序的整数列表或ndarray。使用负数索引将会从末尾开始选取行。
在这里插入图片描述

=====================================
一次传入多个索引数组会有一点特别。它返回的是一个一维数组,其中的元素对应各个索引元组
在这里插入图片描述
在这里插入图片描述
最终选出的是元素(1,0)、(5,3)、(7,1)和(2,2)。无论数组是多少维的,花式索引总是一维的。

=====================================
在这里插入图片描述
选取矩阵的行列子集应该是矩形区域的形式。
花式索引跟切片不一样,它总是将数据复制到新数组中。

数组转置和轴对换

转置是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作)。
数组不仅有transpose方法,还有一个特殊的T属性。利用np.dot计算矩阵内积会用到该操作。
在这里插入图片描述

=====================================
对于高维数组,transpose需要得到一个由轴编号组成的元组才能对这些轴进行转置
在这里插入图片描述
第一个轴被换成了第二个,第二个轴被换成了第一个,最后一个轴不变。

=====================================
T属性就是进行轴对换
ndarray还有一个swapaxes方法,它需要接受一对轴编号。swapaxes也是返回源数据的视图(不会进行任何复制操作)
在这里插入图片描述

元素级数组函数

在这里插入图片描述

这些都是一元(unary)ufunc。

=====================================
另外一些(如add或maximum)接受2个数组(因此也叫二元(binary)ufunc),并返回一个结果数组。
在这里插入图片描述

=====================================
modf返回浮点数数组的小数和整数部分
在这里插入图片描述

利用数组进行数据处理

NumPy数组使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环)
用数组表达式代替循环的做法,通常被称为矢量化。(手抖不小心点开了。。。)
进行简单的sqrt(x^2 +y^2)在这里插入图片描述
在这里插入图片描述

条件逻辑表述为数组运算

numpy.where函数是三元表达式x if condition else y的矢量化。
根据cond中的值选取xarr和yarr的值:当cond中的值为True时,选取xarr的值,否则从yarr中选取。
在这里插入图片描述

=====================================
np.where的第二个和第三个参数不必是数组,它们都可以是标量值。where通常用于根据另一个数组而产生一个新的数组。
在这里插入图片描述

=====================================
使用np.where,可以将标量和数组结合起来。传递给where的数组大小可以不相等,甚至可以是标量值。
在这里插入图片描述

++++++++++++++++++++++++++++++++++++

下一篇:【NumPy基础:数组和矢量计算(四)】【数学和统计方法+用于布尔型数组的方法+排序+唯一化以及其它的集合逻辑+用于数组的文件输入输出】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值