Python数据分析学习(二)Numpy基础入门

概述:Numpy是什么?

NumPy是使用Python进行科学计算的基础软件包。包含了以下内容:

  • 一个强大的N维数组对象。
  • 复杂的(广播)功能。
  • 用于集成C / C ++和Fortran代码的工具。
  • 有用的线性代数,傅里叶变换和随机数功能。

一、ndarray基础知识

(一)各重要属性

Numpy的数组类为ndarray,别名为array,但这里的numpy.array与Python库z中的array.array不同,后者只处理一维数组且仅提供较少的功能,ndarray对象更重要的属性有以下几点:

  • ndarray.ndim - 数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。
  • ndarray.shape - 数组的维度。对于有 n 行和 m 列的矩阵,shape 将是 (n,m)。因此,shape 元组的长度就是rank或维度的个数 ndim。
  • ndarray.size - 数组元素的总数。这等于 shape 的元素的乘积。
  • ndarray.dtype - 一个描述数组中元素类型的对象。例如numpy.int32、numpy.int16和numpy.float64。
  • ndarray.itemsize - 数组中每个元素的字节大小。它等于 ndarray.dtype.itemsize 。
  • ndarray.data - 该缓冲区包含数组的实际元素。
    如下,代码演示说明
    在这里插入图片描述

(二)数组的创建

  1. 通过arrary函数创建,其类型由其中元素的类型推导出来
    在这里插入图片描述
    可以将序列的序列转换为二维数组,当然也可将序列的序列的序列转换为三维数组
    在这里插入图片描述
    可以在创建时通过dtype参数指定数组的类型:
    在这里插入图片描述
  2. zeros()、noes()、empty()函数。函数zeros创建一个由0组成的数组,函数ones创建一个完整的数组,函数empty 创建一个数组,其初始内容是随机的,取决于内存的状态。其类型默认下为float64类型
    在这里插入图片描述
  3. ndarray提供了一个与range()类似的函数arange(),该函数返回一个数组
    在这里插入图片描述
  4. 因为有限的浮点精度,arange与浮点参数一起使用时,通常不可预测所获得的元素的数量,所以通常最好使用linspace函数来接收我们想要的元素数量的函数,而不是步长(step)
    在这里插入图片描述

(三)打印数组

可以将一维数组打印为行,二维数组打印为矩阵,三维数组打印为矩数组表。
在这里插入图片描述

(四)基本操作

  1. +、-、*、/ 算术运算
    在这里插入图片描述
    如图示,数组的算术运算会应用到元素级别
    在这里插入图片描述
    在这里插入图片描述
  2. *=、+=等运算会直接更改被操作的数组而不会创建新的数组(当不同类型的数组进行操作时,其结果数组类型会对应更精确的类型,即向上转换)
    在这里插入图片描述
  3. 聚合功能,numpy提供了许多其他的函数供我们使用,如min、max、sum、mean等等
    在这里插入图片描述
    图示:
    在这里插入图片描述
  4. 我们可以通过指定axis参数,使数组沿指定轴操作
    在这里插入图片描述

(五)通函数(ufunc)

NumPy提供熟悉的数学函数,例如sin,cos和exp。在NumPy中,这些被称为“通函数”(ufunc)。在NumPy中,这些函数在数组上按元素进行运算,产生一个数组作为输出。
在这里插入图片描述

(六)切片/索引

1.简单切片与索引
一维数组可以进行索引、切片、迭代操作和列表等其他Python序列类型一样。
在这里插入图片描述
多维数组的每个轴可以有一个索引,这些索引以逗号隔开的元组出现
在这里插入图片描述
当提高的索引少于轴的数量时,缺失的索引被认为是完整的切片,如下,其 -1 后被视为紧跟着" : "的多个实例,用于表示剩余轴,NumPy也允许写为b[-1,…]
在这里插入图片描述
对多维数组迭代是相对于第一条轴完成的
在这里插入图片描述
可以使用flat属性,对数组中的所有元素进行迭代
在这里插入图片描述
2.花式索引
使用索引数组进行索引
在这里插入图片描述
使用布尔数组进行索引
在这里插入图片描述

二、修改数组的形状

一个数组的形状是由每个轴的元素的数量决定的
在这里插入图片描述
但是我们可以通过命令修改它们的形状。ravel()、reshape()、T三个命令都会返回一个数组,不会修改原有数组。
在这里插入图片描述
resize方法会修改数组本身
在这里插入图片描述
在 reshape 方法中将 size 指定为-1,系统会自动计算其他的 size 大小
在这里插入图片描述

三、数组的拷贝及视图

简单分配不会复制数组对象或其数据
在这里插入图片描述
浅拷贝或视图
在这里插入图片描述
使用copy()函数生成数组及数据的完整副本
在这里插入图片描述
生活中,我们可能不需要原始数据,只要其中一小部分,那么我们可以对其切片后再调用copy()函数
在这里插入图片描述

四、广播

广播允许通用功能以有意义的方式处理不具有完全相同形状的输入。

广播的第一个规则是,如果所有输入数组不具有相同数量的维度,则将“1”重复地预先添加到较小数组的形状,直到所有数组具有相同数量的维度。

广播的第二个规则确保沿特定维度的大小为1的数组表现为具有沿该维度具有最大形状的数组的大小。假定数组元素的值沿着“广播”数组的那个维度是相同的。
实例:a和b是不同形状的数组,a+b最后正常输出
在这里插入图片描述

结语

大体梳理了一下NumPy的基础使用知识,有需要进阶的朋友可阅读参考资料,本文中实例均来源于NumPy官方文档,全部敲一遍和全部看一遍效果是不一样的(建议代码全敲一遍!建议代码全敲一遍!建议代码全敲一遍!),敲一遍印象更加深刻和理解更为透彻,截图为笔者在Anaconda3的JupyterNotebook上的运行结果,最后说一句,能看到这的朋友,是看完了全文的并敲完了实例的,大家要一起加油学习哦


参考资料:
NumPy中文官方文档
NumPy和数据表示的视觉介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值