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. JS的forEach和map方法的区别

    一.前言 forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的.jQuery也有一个方法$.each() ...

  2. Java面试系列--java基础

    Java基础总结 JAVA中的几种基本数据类型是什么,各自占用多少字节. 八大基本数据类型,byte:8位,short:16位,int:32位,long:64位,float:32位,double:64 ...

  3. Zuul上实现限流(spring-cloud-zuul-ratelimit)

    简述 Spring Cloud Zuul RateLimit项目Github地址: https://github.com/marcosbarbero/spring-cloud-zuul-ratelim ...

  4. Spring之BeanFactory和FactoryBean接口的区别

    目录 一.BeanFactory接口 二.FactoryBean接口 1.简单实现 2.增强实现 3.FactoryBean的实际使用案例 三.总结 @   Spring框架中的BeanFactory ...

  5. Flask入门之完整项目搭建

    一.创建虚拟环境 1,新建虚拟环境 cmd中输入:mkvirtualenv 环境名 2,在虚拟环境安装项目运行所需要的基本模块 pip install flask==0.12.4 pip instal ...

  6. 【默认加入持久化机制,防止消息丢失,v0.0.3】对RabbitMQ.Client进行一下小小的包装,绝对实用方便

    RabbitMQ是一个老牌的非微软的消息队列组件,一般来说应该能满足中小型公司对消息队列生产的需求,平时我们在.NET开发环境下运用它是可能会需要RabbitMQ.Client的SDK库,此库是官网提 ...

  7. 如何去掉C#字符串中的所有空格(转载)

    如何去掉C#字符串中的所有空格 来源:https://www.cnblogs.com/donchen/p/8966059.html 字符串行数Trim()可以去掉字符串前后的空格,如:  C# Cod ...

  8. 轻松搞定RocketMQ入门

    RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RocketMQ网络 ...

  9. paas saas iaas 区别

    最近在公司里面经常听到一些paas saas iaas云服务的名词,把我自己都听蒙圈啦,所以就各种找资料终于对这三个名词有了一定的了解 首先上一张图如下: IAAS(nfrastructure as ...

  10. bitset用法小结

    bitset bitset大概就是类似于bool数组一样的东西 但是它的每个位置只占1bit(特别特别小) bitset的原理大概是将很多数压成一个,从而节省空间和时间(暴力出奇迹) 一般来说bits ...