利用Python进行数据分析:【NumPy】

一、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    给定形状产生随机数组

原文地址:https://www.cnblogs.com/liwei1153300111/p/9206422.html

时间: 2024-07-31 14:50:04

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

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

概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为array[index1:index2],意思是从index1索引位置开始,到index2索引(不包括index2)位置结束的一段数组.例如: 当把一个值赋值为一个切片时,该值会作用于此数组片段里每一个元素,例如: 二维数组 二维数组的索引 当以一维数组的索引方式访问一个二维数组的时候,获取的元素不在

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

一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 二.ndarray 是什么 ndarray 是一个多维的数组对象,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点. ndarray 的一个特点是同构:即其中所有元素的类型必须相同. 三.ndarray 的创建 array() 函数 最简单的方法, 使用 NumPy 提供的

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

<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对象.其C语言编写的算法库可以操作内存而不必进行其他工作.比起内置序列,使用的内存更少(即时间更快,空间更少) numpy可以在整个数组上执行复杂的计算,而不需要借助python的for循环 4.0 前提知识 数据:结构化的数据代指所有的通用数据,如表格型,多维数组,关键列,时间序列等 相关包:numpy pa

利用python进行数据分析--(阅读笔记一)

以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分代码组成:少量需要占用大部分执行时间的代码,以及大量不经常执行的“粘合剂代码”. cython已经成为python领域中创建编译型扩展以及对接c/c++代码的一大途径. 3.在那些要求延迟性非常小的应用程序中(例如高频交易系统),为了尽最大可能地优化性能,耗费时间使用诸如C++这样更低级.更低生产率的语言进行

利用python进行数据分析——(一)库的学习

总结一下自己对python常用包:Numpy,Pandas,Matplotlib,Scipy,Scikit-learn 一. Numpy: 标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指 针.这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象.对于数值运算来说这种结构显然比较浪费内存和CPU计算时间. 此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和

PYTHON学习(三)之利用python进行数据分析(1)---准备工作

学习一门语言就是不断实践,python是目前用于数据分析最流行的语言,我最近买了本书<利用python进行数据分析>(Wes McKinney著),还去图书馆借了本<Python数据分析基础教程--NumPy学习指南>(第二版),准备将python数据分析工具的门给入了哈哈,闲话少说,直接切入正题. 首先<利用python进行数据分析>此书的译者强烈建议计算机环境的配置最好与书上的一致,所以我找了半天书上要求用的安装包 第一,安装32位的EPDFree(书上的版本就是3

利用 Python 进行数据分析(三)使用 IPython 提高开发效率

一.IPython 简介 IPython 是一个交互式的 Python 解释器,而且它更加高效. 它和大多传统工作模式(编辑 -> 编译 -> 运行)不同的是, 它采用的工作模式是:执行 -> 探索 ,而大部分和数据分析相关的代码都含有探索式操作(比如试误法和迭代法),所以 IPython 能大大提高编码效率. IPython 发展到现在,它不仅仅只是一个加强版的 Python shell 了, 它集成了 GUI 控制台,这可以让你直接进行绘图操作:它还有一个基于 Web 的交互式笔记本

利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(2)

1.索引上的合并 有时候,DataFrame中的连接键位于其索引中.在这种情况下,你可以传入left_index = True或right_index = True(或两个都传)以说明索引应该被用作连接键: In [8]: left1 = pd.DataFrame({'key': ['a', 'b', 'a', 'a', 'b', 'c'], ...: 'value':range(6)}) In [9]: right1 = pd.DataFrame({'group_val':[3.5, 7]},

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

http://www.cnblogs.com/batteryhp/p/4868348.html 第一章 准备工作 今天开始码这本书--<利用python进行数据分析>.R和python都得会用才行,这是码这本书的原因.首先按照书上说的进行安装,google下载了epd_free-7.3-1-win-x86.msi,译者建议按照作者的版本安装,EPDFree包括了Numpy,Scipy,matplotlib,Chaco,IPython.这里的pandas需要自己安装,对应版本为pandas-0.

利用 Python 进行数据分析(七)- pandas 简单介绍(Series和DataFrame)

一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构:Series 和 DataFrame. 二.Series Series 是一个一维数组对象 ,类似于 NumPy 的一维 array.它除了包含一组数据还包含一组索引,所以可以把它理解为一组带索引的数组. 将 Python 数组转换成 Series 对象: 将 Python 字典转换成 Serie