一、NumPy:数组计算
1、NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。
2、NumPy的主要功能:

# ndarray,一个多维数组结构,高效且节省空间
# 无需循环对整组数据进行快速运算的数学函数
# *读写磁盘数据的工具以及用于操作内存映射文件的工具
# *线性代数、随机数生成和傅里叶变换功能
# *用于集成C、C++等代码的工具

3、安装方法:pip install numpy

二、NumPy:ndarray-多维数组对象
1、创建ndarray:np.array()
2、ndarray是多维数组结构,与列表的区别是:
  --数组对象内的元素类型必须相同
  --数组大小不可修改
3、常用属性:

  --T 数组的转置(对高维数组而言)
  --dtype 数组元素的数据类型
  --size 数组元素的个数
  --ndim 数组的维数
  --shape 数组的维度大小(以元组形式)
4、常用方法

# array.shape                         array的规格
# array.ndim
# array.dtype array的数据规格
# numpy.zeros(dim1,dim2) 创建dim1*dim2的零矩阵
# numpy.arange
# numpy.eye(n) /numpy.identity(n) 创建n*n单位矩阵
# numpy.array([…data…], dtype=float64 )
# array.astype(numpy.float64) 更换矩阵的数据形式
# array.astype(float) 更换矩阵的数据形式
# array * array 矩阵点乘
# array[a:b] 切片
# array.copy() 得到ndarray的副本,而不是视图
# array [a] [b]=array [ a, b ] 两者等价
# name=np.array(['bob','joe','will']) res=name==’bob’ res= array([ True, False, False], dtype=bool)
# data[True,False,…..] 索引,只索取为True的部分,去掉False部分
# 通过布尔型索引选取数组中的数据,将总是创建数据的副本。
# data[ [4,3,0,6] ] 索引,将第4,3,0,6行摘取出来,组成新数组
# data[-1]=data[data.__len__()-1]
# numpy.reshape(a,b) 将a*b的一维数组排列为a*b的形式
# array([a,b,c,d],[d,e,f,g]) 返回一维数组,分别为[a,d],[b,e],[c,f],[d,g]
# array[ [a,b,c,d] ][:,[e,f,g,h] ]=array[ numpy.ix_( [a,b,c,d],[e,f,g,h] ) ]
# array.T array的转置
# numpy.random.randn(a,b) 生成a*b的随机数组
# numpy.dot(matrix_1,matrix_2) 矩阵乘法
# array.transpose( (1,0,2,etc.) ) 对于高维数组,转置需要一个由轴编号组成的元组

三、NumPy:ndarray-数据类型

# ndarray数据类型:dtype:
# 布尔型:bool_
# 整型:int_ int8 int16 int32 int64
# 无符号整型:uint8 uint16 uint32 uint64
# 浮点型:float_ float16 float32 float64
# 复数型:complex_ complex64 complex128

四、NumPy:ndarray-创建

# array()         将列表转换为数组,可选择显式指定dtype
# arange() range的numpy版,支持浮点数
# linspace() 类似arange(),第三个参数为数组长度
# zeros() 根据指定形状和dtype创建全0数组
# ones() 根据指定形状和dtype创建全1数组
# empty() 根据指定形状和dtype创建空数组(随机值)
# eye() 根据指定边长和dtype创建单位矩阵

五、NumPy:索引和切片

# 1、数组和标量之间的运算
# a+1 a*3 1//a a**0.5
# 2、同样大小数组之间的运算
# a+b a/b a**b
# 3、数组的索引:
# 一维数组: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]
# 4、强调:与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。 【解决方法: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)] # import numpy as np
# a = np.array([1,2,3,4,5,4,7,8,9,10])
# a[a>5&(a%2==0)] #注意加括号,不叫括号错误,如下
# 输出:array([ 1, 2, 3, 4, 5, 4, 7, 8, 9, 10])
# a[(a>5)&(a%2==0)]
# 输出:array([ 8, 10])

七、NumPy:花式索引*

问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
答案:a[[1,3,4,6,7]] 问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。
答案:a[:,[1,3]]

八、NumPy:通用函数
通用函数:能同时对数组中所有元素进行运算的函数

【一元函数】:abs, sqrt, exp, log, ceil, floor, rint, trunc, modf,
# numpy.sqrt(array) 平方根函数
# numpy.exp(array) e^array[i]的数组
# numpy.abs/fabs(array) 计算绝对值
# numpy.square(array) 计算各元素的平方 等于array**2
# numpy.log/log10/log2(array) 计算各元素的各种对数
# numpy.sign(array) 计算各元素正负号
# numpy.isnan(array) 计算各元素是否为NaN
# numpy.isinf(array) 计算各元素是否为NaN
# numpy.cos/cosh/sin/sinh/tan/tanh(array) 三角函数
# numpy.modf(array) 将array中值得整数和小数分离,作两个数组返回
# numpy.ceil(array) 向上取整,也就是取比这个数大的整数
# numpy.floor(array) 向下取整,也就是取比这个数小的整数
# numpy.rint(array) 四舍五入
# numpy.trunc(array) 向0取整
# numpy.cos(array) 正弦值
# numpy.sin(array) 余弦值
# numpy.tan(array) 正切值 【二元函数】:add, substract, multiply, divide, power, mod,
# numpy.add(array1,array2) 元素级加法
# numpy.subtract(array1,array2) 元素级减法
# numpy.multiply(array1,array2) 元素级乘法
# numpy.divide(array1,array2) 元素级除法 array1./array2
# numpy.power(array1,array2) 元素级指数 array1.^array2
# numpy.maximum/minimum(array1,aray2) 元素级最大值
# numpy.fmax/fmin(array1,array2) 元素级最大值,忽略NaN
# numpy.mod(array1,array2) 元素级求模
# numpy.copysign(array1,array2) 将第二个数组中值得符号复制给第一个数组中值
# numpy.greater/greater_equal/less/less_equal/equal/not_equal (array1,array2)
# 元素级比较运算,产生布尔数组
# numpy.logical_end/logical_or/logic_xor(array1,array2)元素级的真值逻辑运算

九、补充知识:浮点数特殊值
1、浮点数:float
2、浮点数有两个特殊值:
  --nan(Not a Number):不等于任何浮点数(nan != nan)
  --inf(infinity):比任何浮点数都大
  --在数据分析中,nan常被表示为数据缺失值
2、NumPy中创建特殊值:np.nan np.inf
3、在数据分析中,nan常被用作表示数据缺失值
既然nan连自己都不相等,那么怎么判断是不是NAN呢?
用a==a 只要返回False就能判断

十、NumPy:数学和统计方法

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

十一、NumPy:随机数生成
随机数生成函数在np.random子包内

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

利用Python进行数据分析:【NumPy】的更多相关文章

  1. 利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  2. 利用python进行数据分析--numpy基础

    随书练习,第四章  NumPy基础:数组和矢量运算 # coding: utf-8 # In[1]: # 加注释的三个方法1.用一对"""括起来要注释的代码块. # 2. ...

  3. 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片

    概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...

  4. 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍

    一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...

  5. 《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算

    <利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对 ...

  6. 高阶NumPy知识图谱-《利用Python进行数据分析》

    所有内容整理自<利用Python进行数据分析>,使用MindMaster Pro 7.3制作,emmx格式,源文件已经上传Github,需要的同学转左上角自行下载或者右击保存图片. 其他章 ...

  7. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  8. 《利用python进行数据分析》读书笔记 --第一、二章 准备与例子

    http://www.cnblogs.com/batteryhp/p/4868348.html 第一章 准备工作 今天开始码这本书--<利用python进行数据分析>.R和python都得 ...

  9. 利用python进行数据分析之绘图和可视化

    matplotlib API入门 使用matplotlib的办法最常用的方式是pylab的ipython,pylab模式还会向ipython引入一大堆模块和函数提供一种更接近与matlab的界面,ma ...

  10. 利用Python进行数据分析——重要的Python库介绍

    利用Python进行数据分析--重要的Python库介绍 一.NumPy 用于数组执行元素级计算及直接对数组执行数学运算 线性代数运算.傅里叶运算.随机数的生成 用于C/C++等代码的集成 二.pan ...

随机推荐

  1. python 18 re模块

    目录 re 模块 1. 正则表达式 2. 匹配模式 3. 常用方法 re 模块 1. 正则表达式 \w 匹配字母(包含中文)或数字或下划线 \W 匹配非字母(包含中文)或数字或下划线 \s 匹配任意的 ...

  2. 使用synchronized获取互斥锁的几点说明

    在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确 ...

  3. MySQL 5.7 的安装历程

    mysql5.7零基础入门级的安装教程: 安装环境:Windows 10, 64 位(联想拯救者R720) 安装版本:mysql-5.7.25-winx64 一.下载 1.进入官网 首先,下载MySQ ...

  4. C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken

    系列目录     [已更新最新开发文章,点击查看详细] BIMFACE 平台为开发者提供了大量的服务器端 API 与 JavaScript API,用于二次开发 BIM 的相关应用. BIMFACE ...

  5. Web前端安全分析

    随着互联网高速的发展,信息安全已经成为企业重点关注焦点之一,而前端又是引发安全问题的高危据点,所以,作为一个前端开发人员,需要了解前端的安全问题,以及如何去预防.修复安全漏洞. 一.XSSS攻击 1. ...

  6. C#开发BIMFACE系列16 服务端API之获取模型数据1:查询满足条件的构件ID列表

    系列目录     [已更新最新开发文章,点击查看详细] 源文件/模型转换完成之后,可以获取模型的具体数据.本篇介绍根据文件ID查询满足条件的构件ID列表. 请求地址:GET https://api.b ...

  7. PyTorch : torch.nn.xxx 和 torch.nn.functional.xxx

    PyTorch : torch.nn.xxx 和 torch.nn.functional.xxx 在写 PyTorch 代码时,我们会发现一些功能重复的操作,比如卷积.激活.池化等操作.这些操作分别可 ...

  8. SDU暑期集训排位(9)

    SDU暑期集训排位(9) G. Just Some Permutations 基础 DP 练习部分 定义 \(f(S)\),表示让 S 中的人全 happy 的方案数. \(dp[i][j]\) 表示 ...

  9. 18牛客多校训练第二场 J farm

    题意:一个n×m的农田, 每个小格子都有一种作物, 现在喷t次农药,每次农药覆盖一个矩形, 该矩形里面与农药类型不同的植物都会死掉, 求最后植物的死亡数是多少. 题解:二维树状数组. 每次喷农药的时候 ...

  10. CodeForces 765 F Souvenirs 线段树

    Souvenirs 题意:给你n个数, m次询问, 对于每次一次询问, 求出询问区间内绝对值差值的最小值. 题解:先按查询的右端点从小到大sort一下,然后对于塞入一个数的时候, 就处理出所有左端点到 ...