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. k8s运行容器之deployment(三)--技术流ken

    deployment 我们已经知道k8s是通过各种controller来管理pod的生命周期.为了满足不同业务场景,k8s开发了Deployment.ReplicaSet.DaemonSet.Stat ...

  2. 服务器配置用户信息、ssh免密码登录和防火墙等安全配置

    一.登录服务器      1.回到根目录 cd ~      2.ssh + 用户名@服务器公网地址 ssh root@47.94.208.76      3.输入密码:注意输入法大小写 二.查看服务 ...

  3. [转]gitlab cicd (二)系列之安装git-runner rpm安装方式

    本文转自:https://blog.csdn.net/qq_21816375/article/details/84308748 本编是继gitlab cicd (一)系列之安装gitlb之后,基于安装 ...

  4. C#___.net经典题

    1 请你说说   .NET  中类和结构的区别? 答:结构和类具有大体的语法,但是结构受到的限制比类要多.结构不能申明有默认的构造函数,为结构的副本是又编译器创建 和销毁的,所以不需要默认的构造函数和 ...

  5. Paypal 支付功能的 C# .NET / JS 实现

    说明 最近用到了 Paypal 支付功能,英语一般般的我也不得不硬着头皮踩一踩这样的坑.经过近乎半个月的作,终于实现了简单的支付功能,那么首先就说说使用 Paypal 必定要知道的几点(当前日期 20 ...

  6. Java 连续子数组的最大和(超容易理解)

    题目: {6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止).给一个数组,返回它的最大连续子序列的和 解题思路 ​ 万物皆可使用暴力法,暴力法还是比较容易的 ...

  7. Makedown

    目录 Makedown 介绍 Markdown的语法 Makedown 介绍 Makedown的创建者是John Gruber Q:什么是markdown呢? markdown和html类似是mark ...

  8. 深入理解JavaScript作用域和作用域链

    前言 JavaScript 中有一个被称为作用域(Scope)的特性.虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,本文我会尽我所能用最简单的方式来解释作用域和作用域链,希望大家有所收获! ...

  9. Dynamics 365-为什么CRM环境Workflow执行了多次?

    Workflow执行了多次,这个现象如果排除业务逻辑冲突,人为失误等原因,可能有的人遇到的并不多,但是笔者时不时还能遇到这种情况,所以在这里做个记录,也给遇到相同问题的人一个解决的方法. 当一个Wor ...

  10. SuperMap iClient 如何使用 WMTS 地图服务(转载)

    原文链接: WMTS服务初步理解与读取 https://blog.csdn.net/supermapsupport/article/details/76806670 SuperMap iClient ...