学习笔记 | 《利用python进行数据分析》| 第四章 | NumPy基础:数组和矢量计算

回眸只為那壹抹淺笑 提交于 2020-03-03 01:29:25
import numpy as np

01 NumPy的ndarray:一种多维数组对象

  • ndarray是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的。
  • 每个数组都有一个shape(一个表示各维度大小的元组)和一个dtype(一个用于说明数组数据类型的对象)。

本书中的“数组”、“NumPy数组”、“ndarray”时,基本上都指的是同一样东西,即ndarray对象。

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

⚠️认为np.empty会返回全0数组的想法是不安全的。很多情况下,它返回的都是一些未初始化的垃圾值。

1⃣️ ndarray的数据类型

  • dtype(数据类型)是一个特殊的对象,它含有ndarray将一块内存解释为特定数据类型所需的信息。
  • 数值型dtype的命名方式相同:一个类型名,后面跟一个用于表示各元素位长的数字。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

注意:

  • 调用astype无论如何都会创建出一个新的数组(原始数据的一份拷贝),即使新dtype跟dtype相同也是如此。

警告:

  • 注意,浮点数只能表示近似的分数值。在复杂计算中,由于可能会积累一些浮点错误,因此比较操作只能在一定小数位以内有效。

2⃣️ 数组和标量之间的运算

  • 不用编写循环即可对数据执行批量运算,这通常就叫做矢量化vectorization。
  • 大小相等的数组之间的任何算术运算都会将运算应用到元素级。
  • 数组与标量的算术运算也会将那个标量值传播到各个元素。
    在这里插入图片描述
  • 不同大小的数组之间的运算叫做广播broadcasting。

3⃣️ 基本的索引和切片

  • 当你将一个标量值赋值给一个切片时,该值会自动传播到整个选区。
  • 数组跟列表最重要的区别在于,数组切片是原始数组的视图。这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上。

如果你要想得到的是ndarray切片的一份副本而非视图,就需要显示地进行复制操作,例如arr[5:8].copy()

  • 对于高维度数组,可以传入一个以逗号隔开的索引列表来选取单个元素。
切片索引

在这里插入图片描述

4⃣️ 布尔型索引

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

5⃣️ 花式索引

  • 花式索引跟切片不一样,它总是将数据复制到新数组中。
    在这里插入图片描述
    在这里插入图片描述

6⃣️ 数组转置和轴对换

  • 转置transpose是重塑的一种特殊形式,它返回的是源数据的视图。
  • 数组不仅有transpose方法,还有一个特殊的T属性。
  • np.dot(,)计算矩阵内积。
    在这里插入图片描述
  • transpose()
  • swapaxes()方法

02 通用函数:快速的元素级数组函数

03 利用数组进行数据处理

04 用于数组的文件输入输出

05 线性代数

06 随机数生成

07 范例:随机漫步

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!