一、简介

Numpy是高性能科学计算和数据分析的基础包。它也是pandas等其他数据分析的工具的基础,基本所有数据分析的包都用过它。NumPy为Python带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组。它将常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环,放到C语言的运算中,明显地提高了程序的运算速度。

安装方法:

pip install numpy

在jupyter中:需要加!,!pip3 install numpy

引用方式:

import numpy as np

这是官方认证的导入方式,可能会有人说为什么不用from numpy import *,是因为在numpy当中有一些方法与Python中自带的一些方法,例如maxmin等冲突,为了避免这些麻烦大家就约定俗成的都使用这种方法。

二、ndarray -多维数组对象

Numpy的核心特征就是N-维数组对——ndarray.

1、为什么要是用ndarray?

接下来我们可以通过具体的实例来展示一下ndarray的优势。

现在有这样一个需求:

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

按照Python当中的方法

第一种:是将所有的美元通过for循环依次迭代出来,然后用每个公司的市值乘以汇率

第二种:通过map方法和lambda函数映射

这些方法相对来说也挺好用的,但是再来看通过ndarray对象是如何计算的

通过ndarray这个多维数组对象可以让这些批量计算变得更加简单,当然这只它其中一种优势,接下来就通过具体的操作来发现。

2、创建ndarray对象

import numpy as np
np.array()

3、ndarray多维数组创建

接下来就多维数组举个例子:

有的人可能会说了,这个数组跟Python中的列表很像啊,它和列表有什么区别呢?

  • 数组对象内的元素类型必须相同
  • 数组大小不可修改

4、常用属性

属性 描述
T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(以元组形式)
T:转置
就相当于是将行变成列,列变成行,它也是一个比较常用的方法

5、数据类型

  • dtype
类型 描述
布尔型 bool_
整型 int_ int8 int16 int32 int 64
无符号整型 uint8 uint16 uint32 uint64
浮点型 float_ float16 float32 float64
复数型 complex_ complex64 complex128
整型:
int32只能表示(-2**31,2**31-1),因为它只有32个位,只能表示2**32个数 无符号整型:
只能用来存正数,不能用来存负数 补充:
astype()方法可以修改数组的数据类型

6、ndarray 数组创建

方法 描述
array() 将列表转换为数组,可选择显式指定dtype
arange() range的numpy版,支持浮点数
linspace() 类似arange(),第三个参数为数组长度
zeros() 根据指定形状和dtype创建全0数组
ones() 根据指定形状和dtype创建全1数组
empty() 根据指定形状和dtype创建空数组(随机值)
eye() 根据指定边长和dtype创建单位矩阵
# 1、arange()使用:
>>> np.arange(3)
array([0, 1, 2])
>>> np.arange(3.0)
array([ 0., 1., 2.])
>>> np.arange(3,7)
array([3, 4, 5, 6])
>>> np.arange(3,7,2)
array([3, 5]) -----------------------------------------------------------------
# 2、linspace()的使用
#解释:在1-10之间等比生成5个数,默认顾头顾尾。endpoint=False顾头不顾尾
# 每个数字之间的距离相等的,前后两个数做减法肯定相等
np.linspace(1,10,5)
执行结果:
array([ 1. , 3.25, 5.5 , 7.75, 10. ]) np.linspace(1,10,5,endpoint=False)
执行结果:
array([1. , 2.8, 4.6, 6.4, 8.2]) ----------------------------------------------------------------
# 3、zeros() # 创建全0数组占位
>>> np.zeros(5)
array([ 0., 0., 0., 0., 0.]) >>> np.zeros((5,), dtype=int)
array([0, 0, 0, 0, 0]) >>> np.zeros((2, 1))
array([[ 0.],
[ 0.]]) >>> s = (2,2)
>>> np.zeros(s)
array([[ 0., 0.],
[ 0., 0.]]) ---------------------------------------------------------------------
# 4、ones() # 厨房间全为1的数组占位
>>> np.ones(5)
array([1., 1., 1., 1., 1.]) >>> np.ones((5,), dtype=int)
array([1, 1, 1, 1, 1]) >>> np.ones((2, 1))
array([[1.],
[1.]]) >>> s = (2,2)
>>> np.ones(s)
array([[1., 1.],
[1., 1.]])
------------------------------------------------------------------------
# 5、empty()
np.empty(10)
执行结果:
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
# 这个方法只申请内存,不给它赋值
-----------------------------------------------------------------------
# 6、eye() # 生成对称矩阵 k控制向右偏移量
np.eye(5)
执行结果:
array([[1., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.]])
>>> np.eye(2, dtype=int)
array([[1, 0],
[0, 1]]) >>> np.eye(5,k=2)
array([[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])

7、数组运算和转换

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

arr = np.array([1,2,3,4,5,6])
arr*2
# 执行结果:
array([ 2, 4, 6, 8, 10, 12]) -----------------------------------------------------------------------
arr = np.array([1,2,3,4,5,6])
arr1 = np.array([11,22,33,44,55,66])
arr*arr1
# 执行结果:
array([ 11, 44, 99, 176, 275, 396]) arr+arr1
# 执行结果:
array([12, 24, 36, 48, 60, 72])

一维数组与多维数组之间的转换

# 一维数组-->多维数组
res1 = np.arange(30).reshape(5,-1) # -1无任何作用,占位。系统自动算出几列
res1
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
[24, 25, 26, 27, 28, 29]]) # 多维数组-->一维数组
res2 = res1.reshape(30)
res2
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29])

8、索引和切片

索引取值

# 多维数组索引使用方法
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
[24, 25, 26, 27, 28, 29]])
现在有这样一组数据,需求:找到20
列表写法:arr[3][2]
数组写法:arr[3,2] # 中间通过逗号隔开就可以了 # 一维数组索引使用
array([1, 2, 3, 4, 5, 6])
arr[0] # 1
arr[2] # 3 # 花式索引,列表里放索引。需要提前知道索引
array([1, 2, 3, 4, 5, 6])
arr[[0,3]] # array([1, 4])

切片

# 一维数组切片:和python一至
array([1, 2, 3, 4, 5, 6])
arr[0:2] # array([1, 2]
arr[::-1] # array([6, 5, 4, 3, 2, 1])
arr[::2] # array([1, 3, 5]) # 多维数组切片:arr[行:列]
arr数组
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
[24, 25, 26, 27, 28, 29]])
arr[1:4,1:4] # 切片方式
执行结果:
array([[ 7, 8, 9],
[13, 14, 15],
[19, 20, 21]])

布尔型索引

现在有这样一个需求:给一个数组,选出数组种所有大于5的数。

array([1, 2, 3, 4, 5, 6])

arr > 4
array([False, False, False, True, True, True]) 取值:
arr[arr>3]
array([4, 5, 6])

三、通用函数

能对数组中所有元素同时进行运算的函数就是通用函数

常见通用函数:

能够接受一个数组的叫做一元函数,接受两个数组的叫二元函数,结果返回的也是一个数组

1、一元函数

函数 功能
abs、fabs 分别是计算整数和浮点数的绝对值
sqrt 计算各元素的平方根
square 计算各元素的平方
exp 计算各元素的指数e**x
log 计算自然对数
sign 计算各元素的正负号
ceil 计算各元素的ceiling值
floor 计算各元素floor值,即小于等于该值的最大整数
rint 计算各元素的值四舍五入到最接近的整数,保留dtype
modf 将数组的小数部分和整数部分以两个独立数组的形式返回,与Python的divmod方法类似
isnan 计算各元素的正负号
isinf 表示那些元素是无穷的布尔型数组
cos,sin,tan 普通型和双曲型三角函数

2、二元函数

函数 功能
add 将数组中对应的元素相加
subtract 从第一个数组中减去第二个数组中的元素
multiply 数组元素相乘
divide、floor_divide 除法或向下圆整除法(舍弃余数)
power 对第一个数组中的元素A,根据第二个数组中的相应元素B计算A**B
maximum,fmax 计算最大值,fmax忽略NAN
miximum,fmix 计算最小值,fmin忽略NAN
mod 元素的求模计算(除法的余数)

补充内容:浮点数特殊值

浮点数:float

浮点数有两个特殊值:

1、nan(Not a Number):不等于任何浮点数(nan != nan)
---------------------------------------------
2、inf(infinity):比任何浮点数都大
---------------------------------------------
  • Numpy中创建特殊值:np.nan、np.inf
  • 数据分析中,nan常被用作表示数据缺失值

3、数学统计方法

函数 功能
sum 求和
cumsum 求前缀和
mean 求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin 求最小值索引
argmax 求最大值索引

4、随机数

随机数生成函数在np.random的子包当中

常用函数

函数 功能
np.random.rand 给定形状产生随机数组(0到1之间的数)
np.random.randint 给定形状产生随机整数
np.random.choice 给定形状产生随机选择
np.random.shuffle 与random.shuffle相同
np.random.uniform 给定形状产生随机数组

数据分析之上篇---numpy模块的更多相关文章

  1. 数据分析01 /numpy模块

    数据分析01 /数据分析之numpy模块 目录 数据分析01 /数据分析之numpy模块 1. numpy简介 2. numpy的创建 3. numpy的方法 4. numpy的常用属性 5. num ...

  2. 【Python 数据分析】Numpy模块

    Numpy模块可以高效的处理数据,提供数组支持.很多模块都依赖他,比如:pandas.scipy.matplotlib 安装Numpy 首先到网站:https://www.lfd.uci.edu/~g ...

  3. 开发技术--Numpy模块

    开发|Numpy模块 Numpy模块是数据分析基础包,所以还是很重要的,耐心去体会Numpy这个工具可以做什么,我将从源码与 地产呢个实现方式说起,祝大家阅读愉快! Numpy模块提供了两个重要对象: ...

  4. Python使用pip安装Numpy模块

    安装Numpy模块一般有两种安装方法: 一:下载模块对应的.exe文件,直接双击运行安装 二:下载模块对应的.whl文件,使用pip安装 对于exe文件的安装比较简单,都是双击运行,这里就不说了. 这 ...

  5. numpy模块常用函数解析

    https://blog.csdn.net/lm_is_dc/article/details/81098805 numpy模块以下命令都是在浏览器中输入. cmd命令窗口输入:jupyter note ...

  6. numpy模块、matplotlib模块、pandas模块

    目录 1. numpy模块 2. matplotlib模块 3. pandas模块 1. numpy模块 numpy模块的作用 用来做数据分析,对numpy数组(既有行又有列)--矩阵进行科学计算 实 ...

  7. pandas、matplotlib、Numpy模块的简单学习

    目录 一.pandas模块 二.matplotlib模块 1.条形图 2. 直方图 3.折线图 4.散点图+直线图 三.numpy 一.pandas模块 pandas是BSD许可的开源库,为Pytho ...

  8. Python之路-numpy模块

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

  9. numpy模块(详解)

    重点 索引和切片 级联 聚合操作 统计操作 矩阵 什么是数据分析 是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律 数据分析是用适当的方法对收集来的大量数据进行分析,帮助 ...

随机推荐

  1. 印度IT产业今年裁员5.6万,自动化大潮下安有完卵

    [腾讯科技编者按]业界媒体Quatz撰文指出,对于印度科技从业者来说,2017年是噩梦连连的一年.直到几年前,IT业都还是印度提供就业岗位最多的行业之一,但在今年,这个1600亿美元规模的行业裁掉了5 ...

  2. Spring Boot 学习1-创建Spring Boot应用

    如果使用Maven, 确保先安装好Maven再继续. 创建POM文件 在这里有两种方式: 继承Spring Boot parent的pom. 不继承. 继承Spring Boot pom 1 2 3 ...

  3. Android多模块混淆的问题

    Android在多模块或者组件化的时候,关于混淆的管理,一般常见的做法就是两条. 把所有的混淆规则规则都放在app模块下面,由app统一管理.这样就会有一个问题,就是到会导致混淆规则的冗余. 由mod ...

  4. PM2.5如何引发心脏病的?

    过去的几十年里,科学家们一点一滴地积累起关于空气污染如何威胁人类健康的新认识.他们的注意力大多集中在肺部疾病,包括癌症上面.对空气污染具体危害的认识越来越多,但是对污染的控制和治理却显得举步维艰.面对 ...

  5. 如何成为一名高级C++程序员

     C++这门语言从诞生到今天已经经历了将近30个年头.不可否认,它的学习难度都比其它语言较高.而它的学习难度,主要来自于它的复杂性.现在C++的使用范围比以前已经少了很多,java.C#.python ...

  6. C++走向远洋——(项目二、存储班长信息的学生类、派生)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  7. Ueditor富文本编辑器--上传图片自定义上传操作

    最近负责将公司官网从静态网站改版成动态网站,方便公司推广营销人员修改增加文案,避免官网文案维护过于依赖技术人员.在做后台管理系统时用到了富文本编辑器Ueditor,因为公司有一个阿里云文件资源服务器, ...

  8. windows下tensorflow/objectdetection API环境搭建(基于tensorflow1.14和python3.6)

    此前就听闻室友说tensorflow在windows下坑很多,这次终于亲身领会到了.以下是参考网上大佬的教程以及自己的踩坑史总结出的有效步骤(亲测有效) 1.下载objectdetection所在的m ...

  9. canvas初尝试

    最近学习了canvas,就拿它做了这么个小东西,感觉已经爱上canvas了.上代码 /* * @auhor : 开发部-前端组-李鑫超 * @property { tableData : {Array ...

  10. 使用MySQL练习增删改查时因为版本问题出现连接错误

    使用MySQL练习增删改查时出现连接错误,错误提示如下: 2020-02-19 19:53:51.088 ERROR 16328 --- [reate-249798694] com.alibaba.d ...