NumPy:数组计算

NumPy是高性能科学计算和数据分析的基础包。它是Pandas等其他各种工具的基础

NumPy的主要功能:

  ndarray,一个多维数据结构,高校且节省空间

  无需循环即可对整组数据进行快速运算的数学函数

  读写磁盘数据的工具以及用于操作内存映射文件的工具

  线性代数、随机数生成和傅里叶变化功能

  用于集成C、C++等代码的工具

安装方法:pip install numpy(如果显示命令不存在可以尝试python -m install numpy)

引用方式通常喜欢给numpy模块别名:import numpy as np

NumPy简单使用

例1:已知若干家跨国公司的市值(美元),将其换算为人民币

例2:已知购物车中每件商品的价格与商品件数,求总金额

创建ndarray:np.array()

ndarray是多维数组结构,与列表的区别是:

  数组对象内的元素类型必须相同

  数组大小不可修改

常用属性

T    数组的转置(对二维及以上数组而言)

dtype   数组元素的数据类型

size     数组元素的个数

ndim      数组的维数

shape    数组的维度大小(以元祖的形式)

ndarray创建

arange()    比我们的python3里面的range更加强大,支持浮点数范围

linspance()    类似于arange(),第三个参数为数组长度

zeros()      根据指定形状和dtype创建全0数组

ones()       根据指定形状和dtype创建全1数组

empty()     根据指定形状和dtype创建空数组(随机值)

eye()      根据指定边长和dtype创建单位矩阵

NumPy索引切片

数组和标量(数字)之间的运算

  a+1 a*3 1//a a**0.5

同样大小数组之间的运算

  a+b a/b a**b

数组的索引

一维数组:a[5]

多维数组:

  列表式写法:a[2][3]

  新式写法:a[2,3] (推荐)  逗号隔开,前面作用于行后面作用于列

数组的切片 

一维数组:a[5:8]     a[4:]     a[2:10] = 1

多维数组:a[1:2, 3:4]   a[:,3:5]       a[:,1]

与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组(因为不会复制一份出去而是沿用原来的内存空间中的值)。 【解决方法:copy()】

NumPy布尔型索引

问题:给一个数组,选出数组中所有大于5的数。

答案:a[a>5]

原理: a>5会对a中的每一个元素进行判断,返回一个布尔数组 布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组

问题2:给一个数组,选出数组中所有大于5的偶数。

问题3:给一个数组,选出数组中所有大于5的数和偶数。

答案:

    a[(a>5) & (a%2==0)]

    a[(a>5) | (a%2==0)]

NumPy花式索引

问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。

  答案:a[[1,3,4,6,7]]

问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。

  答案:a[:,[1,3]]

必会知识点

浮点数特殊值

浮点数:float

浮点数有两个特殊值:

  nan(Not a Number):不等于任何浮点数(nan != nan)

  inf(infinity):比任何浮点数都大

NumPy中创建特殊值:np.nan np.inf

在数据分析中,nan常被用作表示数据缺失值

sum 求和

cumsum 求前缀和(截至当前元素及其前面所有的元素和)

mean 求平均数

std 求标准差

var 求方差

min 求最小值

max 求最大值

argmin 求最小值索引

argmax 求最大值索引

总结

数组中的数据类型必须一致,并且数组大小不可再被更改‘

对于数组求相应值由四种不同的方式:

  正常的索引切片取值

  行列分开的切片取值

  布尔型(生成一个与原数组各元素一一对应的布尔值数组,原数组与该布尔值列表一一对应,值为True的放行~~~)

  

Numpy基本操作的更多相关文章

  1. NumPy基本操作快速熟悉

    NumPy 是 Python 数值计算非常重要的一个包.很多科学计算包都是以 NumPy 的数组对象为基础开发的. 本文用代码快速过了一遍 NumPy 的基本操作,对 NumPy 整体有一个把握.希望 ...

  2. 矩阵库Numpy基本操作

    NumPy是一个关于矩阵运算的库,熟悉Matlab的都应该清楚,这个库就是让python能够进行矩阵话的操作,而不用去写循环操作. 下面对numpy中的操作进行总结. numpy包含两种基本的数据类型 ...

  3. numpy数组的操作

    numpy - 介绍.基本数据类型.多维数组ndarray及其内建函数 http://blog.csdn.net/pipisorry/article/details/22107553 http://w ...

  4. numpy的使用方法

    一.numpy快速入门 1.什么是numpy: numpy是python的一个矩阵类型,提供了大量矩阵处理的函数,非正式来说,就是一个使运算更容易,执行更迅速的库,因为它的内部运算是通过c语言而不是p ...

  5. Python的工具包[0] -> numpy科学计算 -> numpy 库及使用总结

    NumPy 目录 关于 numpy numpy 库 numpy 基本操作 numpy 复制操作 numpy 计算 numpy 常用函数 1 关于numpy / About numpy NumPy系统是 ...

  6. Numpy和Pandas的使用入门

    Numpy Numpy基本数据结构 np.array()函数接受一个多维list,返回对应纬度的矩阵 vector = np.array([1, 2, 3, 4]) matrix = np.array ...

  7. Pandas快速上手(一):基本操作

    本文包含一些 Pandas 的基本操作,旨在快速上手 Pandas 的基本操作. 读者最好有 NumPy 的基础,如果你还不熟悉 NumPy,建议您阅读NumPy基本操作快速熟悉. Pandas 数据 ...

  8. Python之路-numpy模块

    这里是首先需要安装好Anaconda Anaconda的安装参考Python之路-初识python及环境搭建并测试 配置好环境之后开始使用Jupyter Notebook 1.打开cmd,输入 jup ...

  9. 第03章 科学计算库Numpy

    016.Numpy数据结构    关于矩阵运算的库 矩阵 017.Numpy基本操作 判断每一个元素的 018.Numpy矩阵属性 019.Numpy矩阵操作 020.Numpy常用函数 按列拼接就用 ...

随机推荐

  1. python基础3--函数

    1.函数定义 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数 ...

  2. [SRM603] WinterAndSnowmen

    Description Sol 设 \(A=\text{XOR}(X)\),\(B=\text{XOR}(Y)\). 因为 \(A<B\),所以写下他们的二进制表示,一定是最高的几位先是相等,紧 ...

  3. IO通信模型(一)同步阻塞模式BIO(Blocking IO)

    几个概念 阻塞IO 和非阻塞IO 这两个概念是程序级别的.主要描述的是程序请求操作系统IO操作后,如果IO资源没有准备好,那么程序该如何处理的问题:前者等待:后者继续执行(但是使用线程一直轮询,直到有 ...

  4. Creating a ROS msg and srv

    msg: msg files are simple text files that describe the fields of a ROS message. They are used to gen ...

  5. 第7章 贡献 - Identity Server 4 中文文档(v1.0.0)

    我们对社区贡献非常开放,但您应该遵循一些指导原则,以便我们可以毫不费力地处理这个问题. 7.1 如何贡献? 最简单的方法是打开一个问题并开始讨论.然后我们可以决定是否以及如何实现功能或更改.如果您应提 ...

  6. .Net 控制台中文(简体/繁体)乱码问题

    加上这句就可以了: Console.OutputEncoding = System.Text.Encoding.UTF8; class Program { static void Main(strin ...

  7. Java 重建二叉树 根据前序中序重建二叉树

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...

  8. Ext.define(override)

    Ext.define(override)作用是:定义类的补丁(扩展或重写) 有3中使用方法,见附件 Ext.define(override).zip

  9. 记录 FTPClient 超时处理的相关问题

    apache 有个开源库:commons-net,这个开源库中包括了各种基础的网络工具类,我使用了这个开源库中的 FTP 工具. 但碰到一些问题,并不是说是开源库的 bug,可能锅得算在产品头上吧,各 ...

  10. jQuery 父iframe与子iframe 相互调用传值

    来自:https://blog.csdn.net/wd4871/article/details/50517597 侵删 父页面中的iframe :如下 <iframe name="su ...