Python数据分析与展示 第一章 Numpy库入门

数据的维度

维度:一组数据的组织形式

一维数据

一维数据由对等关系的有序或无序数据构成,采用线性方式组织

3.1413, 3.1398, 3.1404, 3.1401, 3.1349, 3.1376

对应 列表、数组 和 集合 等概念。

列表和数组

  • 列表:数据类型可以不同
  • 数组:数据类型相同

二维数据

二维数据 由 多个一维数据构成,是一维数据的组合形式

表格是典型的二维数据,其中,表头是二维数据的一部分

多维数据

多维数据由 一维 or 二维数据 在新维度上扩展形成

高维数据

仅利用 最基本的二元关系 展示数据间的复杂结构

数据维度的python表示

一维数据:列表和集合类型

二维数据:列表类型

多维数据:列表类型

高维数据:字典类型 或 数据表示格式

Numpy的数组对象:ndarray

简介

NumPy是一个开源的 Python 科学计算基础库,包含:

  • 一个强大的 N 维数组对象  ndarray;
  • 广播功能函数;
  • 整合 C / C++ / Fortran 代码的工具;
  • 线性代数、傅里叶变换、随机数生成等功能。

Numpy 是 Scipy、Pandas 等数据处理 或 科学计算库的基础

引用

import numpy as np

N维数据对象:ndarray

示例:计算A^{2}+B^{3},(其中,A和B是一维数组)

def pySum():
    a = [0, 1, 2, 3, 4]
    b = [9, 8, 7, 6, 5]
    c = []

    for i in range(len(a)):
        c.append(a[i]**2 + b[i]**3)
    return c
print(pySum())

法二:把数组a和b当成两个数据,直接进行运算 

import numpy as np

def npSum():
    a = np.array([0, 1, 2, 3, 4])
    b = np.array([9, 8, 7, 6, 5])

    c = a**2 + b**3

    return c

print(npSum())

Python已有列表类型,为什么需要一个数据对象(类型)?

  • 数据对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
  • 设置专门的数组对象,经过优化,可以提升这类应用的运算速度
  • 观察:科学计算中,一个维度所有数据的类型往往相同
  • 数组对象采用相同的数据类型,有助于节省运算和存储空间

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

  • 实际的数据;
  • 描述这些数据的元数据(数据维度、数据类型等)

ndarray数组一般要求所有元素类型相同(同质),数组下标从 0 开始

轴(axis):保存数据的维度;

秩(rank):轴的数量

ndarray对象的属性

属性说明
.ndim秩,即轴的数量 或 维度的数量
.shapendarray对象的尺度,对于矩阵,n行m列
.sizendarray对象元素的个数,相当于 .shape中 n*m的值
.dtype

ndarray对象的元素类型

.itemsizendarray对象中每个元素的大小,以字节为单位

ndarray的元素类型

数据类型说明
bool布尔类型,True 或 False
intc与 C语言中的int类型一致,一般是 int32 或 int64
intp用于索引的整数,与 C语言中 ssize_t 一致,int32 或 int64
int8 字节长度的整数,取值:[-128, 127]
int1616位长度的整数,取值:[-32768, 32767]
int3232位长度的整数,取值
int6464位长度的整数,取值
uint88位无符号整数,0~255
uint1616位无符号整数,0~65535
uint3232位。。。
uint6464位。。。
float1616位半精度浮点数:1位符号位,5位指数,10位尾数
float3232位半精度浮点数:1+8+23
float6464位半径度浮点数:1+11+52
complex64复数类型,实部和虚部都是 32位浮点数
complex128复数类型,实部和虚部都是 64位浮点数

ndarray 为什么要支持这么多种元素类型?

  • 对比:Python语法仅支持 整数、浮点数 和 复数 3种类型
  • 科学计算涉及数据较多,对存储和性能都有较高要求;
  • 对元素类型精细定义,有助于 NymPy 合理使用存储空间并优化性能
  • 对元素类型精细定义,有助于 程序员对程序规模 有合理评估

非同质的ndarray对象

ndarray数组的创建和变换

ndarray数组的创建方法

  • 从 Python中的列表、元组 等类型创建 ndarray数组;
  • 使用 NumPy中函数创建 ndarray数组,如:arange,ones,zeros等;
  • 字节流(raw bytes)中创建 ndarray数组;
  • 文件中读取特定格式,创建 ndarray数组。

1.从 py中的列表、元组等类型创建

2.使用 NumPy中函数创建 ndarray数组,如:arange,ones,zeros等

函数说明
np.arange(n)

类似 range() 函数,返回 ndarray类型,元素从 0 到 n-1

np.ones(shape)

根据 shape 生成一个 全1数组,shape是元组类型(数组形状)

np.zeros(shape)

根据 shape 生成一个 全0数组,shape是元祖类型

np.full(shape, val)

根据 shape 生成一个数组,每个元素值都是 val

np.eye(n)

创建一个正方的 n*n单位矩阵,对角线为1,其余为0

np.ones_like(a)

根据数组 a 的形状生成一个 全1数组

np.zeros_like(a)

根据数组 a 的形状生成一个 全0数组

np.full_like(a, val)

根据数组 a 的形状生成一个 数组,每个元素都是 val

np.linspace()根据起止数据 等间距的 填充数据,形成数组

起始数字为1,末位数字为10,希望生成4个数字

endpoint表示末位数字是否包含在内

np.concatenate()将两个 或 多个数组合并成一个新的数组

ndarray数组的变换

维度变换、元素类型变换

维度变换

方法说明
.reshape(shape)不改变数组元素,返回一个 shape 形状的数组,原数组不变
.resize(shape)与 .reshape() 功能一致,但修改原数组
.swapaxes(ax1, ax2)将数组n个维度中两个维度进行调换
.flatten()对数组进行降维,返回折叠后的一维数组,原数组不变

 

类型变换

类型变换说明
.astype(type)创建新的数组(原始数据的一个拷贝),即使两个类型一致
.tolist()数组 向 列表 的转换

ndarray数组的操作

索引:获取数组中 指定位置元素的过程;

切片:获取数组元素子集的过程。

一维数组的索引和切片:与 Python的列表类似

多维数组的索引

多维数组的切片

 

 

 

ndarray数组的运算

数组与标量之间的运算

作用于数组的每一个元素

Numpy一元函数

对 ndarray中的数据执行 元素级运算的函数

函数说明

np.abs(x)

np.fabs(x)

绝对值
np.sqrt(x)平方根
np.square(x)平方

np.log(x)

np.log10(x)

自然对数,10底对数、2底对数

np.ceil(x)

np.floor(x)

np.rint(x)四舍五入值
np.modf(x)将数组各元素中的小数和整数部分 以两个独立数组的形式返回

np.cos(x)   np.cosh(x)

np.sin(x)    np.sinh(x)

np.tan(x)    np.tanh(x)

计算数组各元素的普通型和双曲型三角函数
np.exp(x)计算数组各元素的指数值
np.sign(x)计算数组各元素的符号值,1(+),0, -1(-)

Numpy二元函数

函数说明
+ - * / **两个数组各元素进行对应运算

np.maximum(x, y)

np.minimum(x, y)

np.fmax()

np.fmin()

元素级的最大值/最小值计算
np.mod(x, y)元素级的模运算
np.copysign(x, y)将数组y中各元素值的符号赋值给数组x对应元素
> < >= <= == !=算术比较,产生布尔型数组

单元小结

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值