Numpy 库入门(1)-数据分析与展示单元1(嵩天)
Numpy 库入门数据的维度一个数据表示一个含义,一组数据表示一个或多个含义一维数据由对等关系的有序或者无序数据构成,采用线性方式组织;对应列表、数组、集合等概念列表和数组:都是一组有序结构;区别在于,列表中数据类型可以不同,而数组中的数据类型相同(浮点数)python 表示:列表和集合[123, 3.125, 666.5]{6.688, 8.668, 99699}二维数据是由一堆数据构成,是一维
·
Numpy 库入门
数据的维度
- 一个数据表示一个含义,一组数据表示一个或多个含义
一维数据
由对等关系的有序或者无序数据构成,采用线性方式组织;对应列表、数组、集合等概念
- 列表和数组:都是一组有序结构;区别在于,列表中数据类型可以不同,而数组中的数据类型相同(浮点数)
- python 表示:列表和集合
[123, 3.125, 666.5]
{6.688, 8.668, 99699}
二维数据
是由一堆数据构成,是一维数据的组合形式,表格是典型的二维数据,表头也可以为二维数据的一部分
- python 表示:列表
[[3.222, 2.565, 7.666],
[6.556, 7.889, 9.666]]
多维数据
是一维或者二维数据在新维度上扩展形成:在成绩排名表格上增加一个时间维度
- python 表示:列表类型
高维数据
高维数据仅利用最基本的二元关系展示数据间的复杂结构,如:键值对
- python 表示: 字典类型或数据表示格式(JSON,XML,YAML):
dict = {"firstName":"Jmila","lastName":"Xiang"}
Numpy 数组对象:ndarray
Numpy 是一个开源的python科学计算基础库
- 一个强大的N维数组 ndarray
- 广播功能函数:用于在数组之间进行计算
- 整合C/C++/Fortran代码的工具
- 线性代数/傅里叶变换/随机数生成等功能
- 是Scipy/Pandas等数据处理或科学计算库的基础
使用
1, import numpy as np # 别名建议约定俗成的,好识别
2, from numpy import *
- 列表对象和数组对象在计算时的差别(一维):
array 不能用于矩阵相乘,因为数组中只能进行对应位置的乘法,而矩阵乘法是i行*i列,涉及到矩阵的乘法时,要将array 转换为matrix
- 数组对象可以去掉元素间运算所需要的循环,使一维向量更像单个数据
- 设置专门的数组对象,经过优化,可以提升这类应用的运算速度
- 数组对象 采用相同的数据类型,有助于节省运算和存储空间
N维数组对象
ndarray 是一个多维数组对象,由两部分组成:
- 实际数据
- 描述这些数据的元数据(维度,类型等)
- 实例:np.array() 生成一个ndarray 数组,轴;保存数据的维度;秩:轴的数量
ndarray 元素类型
python 语法仅支持整数、浮点数、复数3种类型
- 科学计算涉及数据较多,对存储和性能都有较高的要求
- 对元素类型精细定义,有助于Numpy合理使用存储空间并优化性能
- 对元素类型精细定义,有助于程序员对程序规模有合理评估
- ndarry 数组可以由非同质对象构成,非同质ndarray元素为对象类型
- 非同质ndarray对象无法有效发挥Numpy优势,尽量避免使用
ndarry 数组创建
- 从python 中的列表、元组等类型创建
x = np.array([0,1,1,3,4,6])
- 使用函数创建
ndarray 数组的变换
-
可以对创建后的数组进行维度变换和元素类型变换
-
改变数据类型的函数
new_a =a.astype(new_type)
a=np.ones((2,3,4),dtype = np.int )
b =a.astype(np.float) # 必定创建新的数组
b # 数据由原本的int 变为float型
Out[20]:
array([[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]],
[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]]])
数组像列表转换
列表是python中最原始的数据类型,可能占用空间较大,但在传统的与python语言相适应的语言中的转换还是很常见
ls = a.tolist()
a= np.full((2,3,4),25,dtype = np.int)
a
Out[23]:
array([[[25, 25, 25, 25],
[25, 25, 25, 25],
[25, 25, 25, 25]],
[[25, 25, 25, 25],
[25, 25, 25, 25],
[25, 25, 25, 25]]])
lsb = a.tolist()
lsb
Out[25]:
[[[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]],
[[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]]]
数组的索引和切片
索引:获取数组中特定位置元素过程
切片:获取数组元素子集过程
- 一维数组
1,索引:与python 列表类似,a[2] # 编号从0开始,或最后一个为-1,获取第三个元素
2,切片:起始编号:终止编号:步长a[1:4:2] # 表示提取从第二个到第四个,间隔(步长)为2的元素,不含终止编号
- 多维数组
1,索引:每一个维度一个索引值,逗号分割a[1,2,3] # 表示第一个维度的第二个元素的第三个元素(第二个维度)的第四个元素(第三个维度)
2,切片:冒号表示选择整个维度,::2 表示从第一个元素开始以2 为步长获取元素
ndarray数组的运算
- 与标量之间的运算作用于数组的每一个元素
- 对ndarray中的数执行元素级运算的函数
一元函数
二元函数
总结
更多推荐
所有评论(0)