一、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 Web Flask源码解读(三)——模板渲染过程

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  2. mysql迁移mpp数据库Greenplum

    1. 场景描述 因兄弟项目中mysql有点扛不住了,要做sql优化,但是业务有点小复杂,优化起来有点麻烦(sql嵌套有点多),便想着用Mpp数据库Greenplum测试下,看性能和复杂度怎么样,趟趟水 ...

  3. 带你了解什么是Push消息推送

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 如果有看我最近文章的同学可能就知道我在公司负责的是一 ...

  4. mac入门之设置

    mac入门: 一般手机软件,都是分设置和业务功能:操作系统亦是如此,设置+必备应用:用设置入门十分合理. 总览: 通用:通用,顾明思意是设置的设置,设置是独立应用之外或者公共的开关,通用更抽象一层,没 ...

  5. sql查询技巧指南

    传送门(牛客网我做过的每到题目答案以及解析) sql定义: 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用 ...

  6. HDU-DuoXiao第二场hdu 6315 Naive Operations 线段树

    hdu 6315 题意:对于一个数列a,初始为0,每个a[ i ]对应一个b[i],只有在这个数字上加了b[i]次后,a[i]才会+1. 有q次操作,一种是个区间加1,一种是查询a的区间和. 思路:线 ...

  7. CodeForces div3 第一场

    A Wrong Subtraction 题意: 对于一个数操作n次,操作如下: 如果末尾是0就将这个数除以10, 如果末尾不是0就将这个数-1, 直接做就好了. 代码: #include<bit ...

  8. Spring.Net是怎么在MVC中实现注入的(原理)

    本文将介绍Spring.Net(不仅仅是Spring.Net,其实所有的IoC容器要向控制器中进行注入,原理都是差不多的)在MVC控制器中依赖注入的实现原理,本文并没有关于在MVC使用Spring怎么 ...

  9. MyCat数据库的基础配置及使用

    一.为什么需要分布式数据据库 随着计算机和信息技术的迅猛发展,行业应用系统的规模迅速扩大,行业应用所产生的数据量呈爆炸式增长,动辄达到数百TB甚至数百PB的规模,已远远超出传统计算技术和信息系统的处理 ...

  10. 【Offer】[53-2] 【0~n-1中缺失的数字】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内.在范围0~n-1内的n个数字中有且只有一个数字 ...