菜鸟数据科学入门03 - NumPy 数组基础和基本 *** 作

菜鸟数据科学入门03 - NumPy 数组基础和基本 *** 作,第1张

回顾:

NumPy 是一个用于科学计算的基础 Python 库( 安装说明 )。它可以让你在 Python 中使用向量和数学矩阵,以及许多用 C 语言实现的底层函数。

在 Notebook 中导入 NumPy:

数组是将数据组织成若干个维度的数据块。

NumPy 的核心是数组(arrays)。

用 array 创建数组

在 NumPy 数组中,数据类型需要一致,否则,会尝试「向上兼容」,比如生成一个包含浮点数的数组,输出时每个元素都变成了浮点型:

NumPy 还可以用循环生成数组:

用 full 生成一个 3 行 5 列的数组:

用 arange 等距填充数组:

(arange 是 Python 内置函数 range 的数组版,返回的是一个 ndarray 而不是 list)

用 linspace 线性填充数组:

用 random 生成随机数组:

btw 数组索引从 0 开始

NumPy 中的切片语法: x[start:stop:step] ,如果没有赋值,默认值 start=0, stop=size of dimension, step=1。

(上图最后一个图形,arr[1, :2] 应该是 (1,2) 一行二列矩阵??)

复制数组切片

reshape:

转置(transpose)是重塑(reshape)的一种特殊形式,返回源数据的视图而不进行复制。

用 concatenate 连接数组:

用 vstack 合并到数据行, hstack 合并到数据列

拆分数组的函数包括: np.split , np.hsplit, np.vsplit

传递给数组一个与它有关的条件式,然后它就会返回给定条件下为真的值。

在生成图形时也非常好用:

在程序中用条件式选择了图中不同的点。蓝色的点(也包含图中的绿点,只是绿点覆盖了蓝点),显示的是值大于零的点。绿点显示的是值大于 0 小于 Pi / 2 的点。

当不同 shape 的数组进行运算(按位加/按位减的运算,而不是矩阵乘法的运算)时,(某个维度上)小的数组就会沿着(同一维度上)大的数组自动填充。广播虽然是一个不错的偷懒办法,但是效率不高、降低运算速度通常也为人诟病。

广播的原理(via Broadcast Visualization ):

Numpy是Python最流行的数学计算库之一,它 支持多维数组与矩阵的各种运算。在Numpy库中ndarray对象是其核心,它支持任意维度的数组(向量),所有的运算都是以array为基础展开的。此外,在 Numpy的 矩阵mat是array的一个子集,也就是二维的数组。

下面我们来看一下array的基本运算。

NumPy数组在与数值进行运算时,具有广播特性。也就是说,数组中的每个元素都会进行同样的运算,这些运算包括“+、-、*、/、**、&、|、^”等。

例如:array([1,2,3,4,5])*2 相当于array([1*2,2*2,3*2,4*2,5*2]), 代码示例如下。

对于维度相同的两个数组,将按照元素逐项进行运算。以‘*’为例:

已知

那么:

代码示例如下

对于维度不同的两个数组,则会进行广播运算, 例如

那么

我们知道对于向量

那么a与b的点积为:

在Numpy中,一维数组的点积(dot)和内积(inner)是相同的。但是对于多维数组来说,则有差别。inner运算中,可以将数组最后一个维度(行)视为向量,两个数组的内积就是逐项对这些向量的内积。而dot运算则是前一个数组雨后一个数组转置后的结果,即inner(a,b.T).

以上代码在Python 3.7中运行通过。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11532899.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存