Numpy 库入门(1)-数据分析与展示单元1(嵩天)

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等数据处理或科学计算库的基础

使用

1import numpy as np  # 别名建议约定俗成的,好识别
2from numpy import *
  • 列表对象和数组对象在计算时的差别(一维):
    array 不能用于矩阵相乘,因为数组中只能进行对应位置的乘法,而矩阵乘法是i行*i列,涉及到矩阵的乘法时,要将array 转换为matrix
    列表和数组计算差别
  • 数组对象可以去掉元素间运算所需要的循环,使一维向量更像单个数据
  • 设置专门的数组对象,经过优化,可以提升这类应用的运算速度
  • 数组对象 采用相同的数据类型,有助于节省运算和存储空间

N维数组对象

ndarray 是一个多维数组对象,由两部分组成:

  • 实际数据
  • 描述这些数据的元数据(维度,类型等)
  • 实例:np.array() 生成一个ndarray 数组,轴;保存数据的维度;秩:轴的数量
    ndarray 对象的属性

ndarray 元素类型

python 语法仅支持整数、浮点数、复数3种类型

  • 科学计算涉及数据较多,对存储和性能都有较高的要求
  • 对元素类型精细定义,有助于Numpy合理使用存储空间并优化性能
  • 对元素类型精细定义,有助于程序员对程序规模有合理评估
    ndarray元素类型1
    ndarray元素类型2
    ndarray元素类型3
  • ndarry 数组可以由非同质对象构成,非同质ndarray元素为对象类型
  • 非同质ndarray对象无法有效发挥Numpy优势,尽量避免使用

ndarry 数组创建

  • 从python 中的列表、元组等类型创建
x = np.array([0,1,1,3,4,6])
  • 使用函数创建
    函数创建数组
    对应实例
    创建ndarry函数2
    其他函数创建
    其他函数创建实例

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中的数执行元素级运算的函数

一元函数

一元函数1
一元函数2

二元函数

二元函数
二元函数运算实例

总结

内容总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值