2.1 ndarray多维数组

2.1.1 创建ndarray数组

通过NumPy库的array函数,即可轻松地创建ndarray数组。NumPy库能将数据(列表,元组,数组,或其他序列类型)转换为ndarray数组

第一步先要引入NumPy库:import numpy as np

array函数 语法;np.array(data)

参数说明:data为需要转换为ndarray数组的序列

通常来说,ndarray是一个通用的同结构数据容器,即其中的所有元素都需要是相同的类型,当创建好一个ndarray数组时,同时会在内存中储存ndarray的shape和dtype

shape:ndarry维度大小的元组

dtype:解释说明ndarray数据类型的对象

NumPy库还有一些函数可以创建特殊的数组

arange 类似于内置的range函数,用于创建数组

ones 创建指定长度或形状的全1数组

ones_like 以另一个数组为参考,根据其形状和dtype创建全1数组

zeros,zeros_like 同上,创建没有具体值的数

eye,identity 创建正方形的N*N单位矩阵

2.1.2 ndarray对象属性

.ndim 即数据轴的个数

.shape 数组的维度

.size 元素的个数

.dtype 数据类型

.itemsize 数组中每个元素的字节大小

2.1.3 nadarry数据类型

浮点数(float),整形(int),复数(complex),布尔值(bool),字符串(string_),Python对象(object)

astype方法进行数据类型的转换

语法:arr.astype(np.float64|'float64')

2.1.4 数组转换

1.数组重塑

reshape方法改变其数据维度

语法:arr.reshape((x,y))

x:行

y:列,可以设置为-1,表示数组的维度可以通过数据本身来推断

数据散开(ravel)或扁平化(flatten)

语法:arr.ravel() 语法:arr.flatten()

说明:arr:ndarray数组 说明:arr:ndarray数组

2.数组合并

conzatenate方法通过指定轴方向,将多个数组合并在一起

注意:轴用来为超过一维的数组定义的属性,二维数组拥有两个轴:第0轴(axis=0)沿着行的垂直往下,第1轴(axis=1)沿着列的方向水平延伸

语法:np.concatenate([arr1,arr2],axis=0|1) axis:指定轴

vstack和hstsck方法也可以进行数组合并

语法:np.vstack((arr1,arr2)) 语法:np.hstack((arr1,arr2))

3.数组拆分

split方法可以将数组拆分为多个数组

语法:np.split(arr,indices_or_sections,axis=0)

arr 要切分的数组

indices_or_sections 如果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置(左开右闭)

axis 沿着哪个维度进行切向,默认为0,横向切分。为1时,纵向切分

4.数组置换和轴对换

转置是数组重塑的一种特殊形式,可以通过transpose方法进行转置

transpose方法需要传入轴编号组成的元组,这样就完成了数组的转置

数组的T属性,也可用于数组的转置

swapaxes方法用于轴对换

2.1.5 NumPy的随机数函数

rand 产生均匀分布的样本值

randint 给定范围内取随机整数

randn 产生正态分布的样本值

seed 随机数种子

permutation 对一个序列随机排序,不改变原数组

shuffle 对一个序列随机排序,改变原数组

uniform(low,high,size) 产生具有均匀分布的数组,low表示起始值,high表示结束值,size表示形状

normal(loc,scale,size) 产生具有正态分布的数组,loc表示均值,scale表示标准差

poisson(lam,size) 产生具有泊松分布的数组,lam表示随机事件发生率

2.2 数组的索引和切片

2.2.1 数组的索引

一维数组的索引类似于Python列表

数组的切片返回的是原始数组的视图。简单地说,视图就是原始数组的表现形式,切片操作并不会产生新数据,这就意味着在视图上的操作都会使原数组发生改变。

如果需要的并非视图而是要复制数据,则可以通过copy方法来实现

在高维数组中,如果省略后面的索引,则会返回低一个维度的数组

2.2.2 数组的切片

一维数组的切片同样类似于Python列表

多维数组的切片是按照轴方向进行的,当在中括号中输入一个参数时,数组就会按照0轴(也就是第一 轴)方向进行切片

python numpy数组中冒号的使用:

python中冒号实际上有两个意思: 1.默认全部选择; 2.指定范围(注意这里含左不含右)

2.2.3 布尔型索引

注意:布尔型数组长度必须和被索引的长度一致

2.2.4 花式索引

花式索引是NumPy中的术语,它可以通过整数列表或数组进行索引

也可以使用np.ix_函数完成同样的操作

2.3 数组的运算

2.3.1 数组和标量间的运算

数组之所以很强大而且重要的原因,是其不需要通过循环就可以完成批量计算,也就是矢量化。相同维度的数组的算术运算都可以直接应用到元素中,也就是元素级运算。

2.3.2 通用函数

通用函数是一种对数组中的数组执行元素级运算的函数

一元函数:函数传入一个数组

abs函数求绝对值

square函数求平方

二元函数:有一些函数需要传入两个数组并返回一个数组

add函数用于两个数相加

minimum函数可以计算元素最小值

有些通用函数还可以返回两个数组,例如modf函数可以返回数组元素的小数和整数部分

2.3.3 条件逻辑运算

如果需要通过cond的值来选取arr1和arr2的值,当cond为True时,选择arr1的值,否则选择arr2的值,可以通过if语句判断来实现

if方法存在的两个问题:第一,对大规模数组处理速度不是很快;第二,无法用于多维数组 where函数可以解决这两个问题

where函数:where(condition,x,y) 满足条件(conditin),输出x,不满足输出y

2.3.4 统计运算

NumPy库支持对整个数组或指定轴向的数据进行统计计算

sum函数用于求和

mean函数用于求算术平均数

std,var函数用于求标准差和方差

min,max函数求最小值和最大值

argmin,argmax函数求最小和最大元素索引

cumsum函数求所有元素的累计和

cumpord函数求所有元素的累计积

2.3.5 布尔型数组运算

对于布尔型数组,其布尔值会被强制转换为1(Ture)和0(False)

any和all也可以用于布尔型数组运算

any函数用于测试数组中是否存在一个或多个Ture

all函数用于检查数组中的所有值是否为Ture

2.3.6 排序

与Python列表相似,NumPy数组也可以通过sort方法进行排序

sort函数进行排序(从小到大) 对于多维度数组,可以通过指定轴方向进行排序

2.3.7 集合运算

NumPy库中提供了针对一维数组的基本集合运算。在数据分析中,常使用np.unique方法来找出数组中的唯一值

注意:对唯一-值进行了排序

unique(x)唯一值

intersectld(x,y)公共元素

unionld(x,y)并集

setdiffd(x,y)集合的差

setxorld(x,y)交集取反

2.3.8 线性代数

数组的运算是元素级的,数组相乘的结果是各对应元素的积组成的数组。而对于矩阵而言,需要求的是点积,这里NumPy提供了用于矩阵乘法的dot函数。

点积:在数学中,又称数量积(dot product; scalar product),是指接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积

dot函数矩阵乘法

2.4 数组的存取

2.4.1数组的存储

通过np.savetxt方法可以对数组进行存储

np.savetxt(fname, X, fmt= *%.18e',delimiter=' ,newline="\n',header=", footer=", comments='# ' encoding=None)

2.4.2数组的读取

对于存储的文件,可以通过np.loadtxt方法进行读取,并将其加载到一个数组中

np.loadtxt(fname, dtype= , comments='#',delimiter=None, converters=None, skiprows=0, usecols =None,unpack=False, ndmin=0, encoding='bytes')

拓展文件存储方法:

2.5 综合实例

2.5.1 图像转换

图像一般采用的是RGB色彩模式,即每个像素点的颜色有R (红)、G(绿)、B(蓝)组成。通过三种颜色的叠加可以得到各种颜色,每个颜色的取值范围为0~255。Python中的PIL库是一 个处理图像的第三方库

python 组合数库函数_Python数据分析之Numpy库(笔记)相关推荐

  1. python numpy库作用_python数据分析之numpy库

    一.numpy概述 numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速.节省空间.numpy支持高级大量的维度数组与矩阵运算, ...

  2. python nan判断_Python数据分析:Numpy基本操作

    NumPy:数组计算 NumPy是高性能科学计算和数据分析的基础包.它是Pandas等其他各种工具的基础 NumPy的主要功能: ndarray,一个多维数据结构,高校且节省空间 无需循环即可对整组数 ...

  3. python数组求和函数_python数据分析之Numpy数据库第三期数组的运算

    上期数组的索引和切片的知识总结通道:数组的索引和切片 数组和标量间的运算 数组之所以强大而且重要的原因,是其不需要通过循环就可以完成批量计算,也就是矢量化 import numpy as np a = ...

  4. python多维数据分析_Python 数据分析:numpy 多维数组 ndarray

    下面的文章中,将使用约定俗成的模块名 np 来表示 NumPy 库. 1. 多维数组的创建 NumPy 提供了许多常用的函数来创建多维数组,先概览这些函数的名称及功能. 函数 说明 array 将输入 ...

  5. python数据分析用什么库_Python数据分析常用的库总结

    Python之所以能够成为数据分析与挖掘领域的最佳语言,是有其独特的优势的.因为他有很多这个领域相关的库可以用,而且很好用,比如Numpy.SciPy.Matploglib.Pandas.Scikit ...

  6. python中ndarray对象实例化_Python数据分析之Numpy学习 2——NumPy 基础 ndarray对象

    Python数据分析之Numpy学习 2 -- NumPy 基础学习 NumPy(Numerical Python)是高性能科学计算和数据分析的基础包.NumPy的主要对象是同构数据多维容器(homo ...

  7. python numpy读取数据_Python数据分析之numpy学习(一)

    文|刘顺祥 Python是一门不错的动态语言,其应用的领域非常广泛,如web开发.Linux运维.数据挖掘.机器学习.爬虫.推荐系统等.在学完<廖雪峰Python2.7教程>感觉受益匪浅, ...

  8. python中导入numpy库_python中的Numpy库

    导入numpy库: import numpy as np python的一个科学计算库的一个基础包,包含了强大的N维数组对象和向量运算 数组创建,可以使用array函数从常规的python列表和或元组 ...

  9. python中的numpy库有什么优缺点_python中关于numpy库的介绍

    1.Numpy是什么? NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵. NumPy包含很多实用的数学函数,涵盖线 ...

最新文章

  1. Site Group Level Price Maintenance in IS Retail
  2. 图解Matlab向量和向量运算
  3. MFC DLL 的三种类型
  4. COMP9313 2018s2 Project 3
  5. ASP.NET MVC3书店--第五节 表单编辑(第二部分)(转)
  6. C++学习之路 | PTA乙级—— 1007 素数对猜想 (20分)(精简)
  7. 计算机考研 机试书籍及相关的资料
  8. 降价到心痛也无人问津!这款手机成绝唱...
  9. 是什么意思网络用语_日本网络用语是什么意思?
  10. 三星app图标不见了怎么恢复_手机便签的内容不见了怎么恢复?试试这款便签软件的时间轴功能...
  11. react 实现图片正在加载中 加载完成 加载失败三个阶段的
  12. 搭建物联网服务器(一):购买阿里云服务器
  13. 7-4 人民币兑换 (10 分)C语言
  14. 文科如何晋级计算机职称,职称的档次是怎么确定来的?
  15. 用计算机找终身伴侣,五个经典问题决定你是否找到终身伴侣
  16. Linux vi的剪切,复制和粘贴
  17. 服务器ie安全增强关闭后还是显示,怎么关掉ie浏览器的增强安全配置
  18. IE主页被修改的处理方法
  19. SAP MIRO付款条件与折扣
  20. 谷歌浏览器Chrome 7.1-7.3版本,设置默认启动flash的方法

热门文章

  1. 【Java报错】Greenplum数据库报错 could not determine data type of parameter $2. 问题解决(踩坑分享)
  2. 02 | 高性能 IO 模型:为什么单线程 Redis 能那么快?
  3. linux arp 老化时间,Linux实现的ARP缓存老化时间原理解析
  4. php使用mysql怎么连接浏览器_一个简单的php实现的MySQL数据浏览器
  5. ajax多文件上传,js限制上传文件大小,文件上传前在浏览器展示
  6. 「数据库系列四」分布式数据库CAP理论与最终一致性
  7. JAVA——RSA加密【X509EncodedKeySpec、PKCS8EncodedKeySpec、RSAPublicKeySpec、RSAPrivateKeySpec】
  8. The Little Match Girl
  9. MyBatis-学习笔记06【06.使用Mybatis完成DAO层的开发】
  10. 操作系统 课堂练习题02【8道 经典题目】