利用Python进行数据分析 第4章 NumPy基础 | 您所在的位置:网站首页 › gai周延微博超话 › 利用Python进行数据分析 第4章 NumPy基础 |
2.3 NumPy数组的运算 数组,不需要编写循环即可对数据执行批量运算!NumPy用户称此特性为矢量化(vectorization)。 (1)大小相等的数组之间的任何算术运算都会将运算应用到元素级 (2)数组与标量的算术运算将标量值传播到各个元素 PS:**在python中表示幂运算,如,2**3表示2的3次方 (3)大小相同的数组之间的比较会生成布尔值数组 (不同大小的数组之间的运算叫广播,本书不需要多广播机制深入理解)
2.4 基本的索引和切片 数组与列表的重要区别在于:数组切片是原始数组的视图,这意味着数据不会被复制,视图上的人任何修改都会直接反映到源数组上。 (1) (2)标量值和数组都可以被赋值给数组中的元素 (3) (4)切片索引 - 一维对象,其语法与python的列表差不多 (5)切片索引 - 二维对象,切片是沿着一个轴向选取元素的 arr2d[:2]意为沿着第0轴进行切片,并“选取arr2d的前两行”; arr2d[:1]意为沿着第0轴进行切片,并“选取arr2d的第一行”; arr2d[:] 意为沿着第0轴进行切片,并“选取arr2d的全部行”,“只有冒号”表示选取整个轴; arr2d[:0]会输出该数组的相关属性。 一次传入多个切片 通过整数索引和切片混合,得到低维度的切片 如下,选取第二行的前两列 如下,选取前两行的第3列 如下,“只有冒号”表示选取整个轴 (5)布尔型索引 本例使用一个用于存储数据的数组以及一个存储姓名的数组(含有重复项) 使用numpy.random中的randn函数生成一些正态分布的随即数据:
数组的比较运算(如==)也是矢量化的,故,对names和字符串‘Bob’进行比较运算将会产生一个布尔型数组: 1) 布尔型数组可用于数组索引(布尔型数组的长度必须跟被索引的轴长度一致): 2)布尔型数组跟切片、整数(或整数序列)混合使用: 3)要选择除“Bob”以为的其他值,既可以使用不等号(!=),也可通过(~)对条件进行否定: 4)可组合运用多个布尔条件,使用&(和)、|(或)之类的布尔算术运算符。Python关键字and和or在布尔数组中无效,要使用&和|。 5)通过布尔型数组设置值,是一种常用的手段 (6)花式索引 - 无论数组是多少维的,花式索引总是一维的,且花式索引总视将数据复制到新数组中 花式索引,是一个NumPy术语,指利用整数数组进行索引。 1)为了以特定顺序选取行子集,只需传入一个用于指定顺序的整数列表或ndarray即可:
2)使用负数索引,将会从末尾开始选取行: 3)一次传入多个索引数组,将返回一个一维数组,其中的元素对应各个索引元组 最终选出的元素是(1, 0), (5, 3), (7, 1), (2, 2) . 无论数组是多少维的,花式索引总是一维的 (7)数组转置和轴对换 1)转置 - 在矩阵计算时经常用到,如np.dot计算矩阵内积 转置是重塑的一种特殊形式,返回的是源数据的视图(不会进行任何复制操作)。 转置,在矩阵计算时经常用到,如np.dot计算矩阵内积: 2)高维数组转置,需要用transpose函数,关于transpose的用法理解,有一定难度,但是参考下面的链接后,非常容易理解。https://bbs.pinggu.org/thread-4565507-1-1.html
transpose的元组参数(1, 0, 2)实际代表reshape中的元组参数(2, 2, 4),也即0 > 2,1 > 2,2 > 4 transpose中的元组参数(1, 0, 2)意味着第一个轴换成第二个,第二个轴换成第一个,第三个轴不变。
3)用 .T 对高维数组简单转置,实质就是对轴进行对换
4)用ndarray的swapaxes方法进行转置,该方法需要接受一对轴编号作为参数,并对轴进行调整用于重组数据。swapaxes(p,q)(p和q是轴的编号)表示对换p和q轴,案例中表示对换1-轴和2-轴。
|
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |