主题思想
摘要:有损地去数据特征的过程
基本统计(含排序)
分步/累计统计
数据特征
相关性,周期性等
数据挖掘(形成知识)
IPython的%魔术命令
%magic 显示所有魔术命令
%hist IPython命令的输入历史
%db 异常发生后自动进入调试器
%reset 删除当前命名空间中的全部变量或名称
%who 显示Ipython当前命令空间中已经定义的变量
%time statement 给出代码的执行时间,statement表示一段代码
%timeit statement 多次执行代码,计算综合平均执行时间
NumPy
是一个开源的python科学计算基础库
一个强大的N维数组对象ndarray
广播功能函数
整合C/C++/Fortran代码的工具
线性代数,傅里叶变换,随机数生成等功能
是SciPy,Pandas等数据处理或科学计算库的基础
import numpy as np
def npSum(): # 要想的是:a 跟 b 是一个数据 a = numpy.array([1,2,3,4,5]) b = numpy.array([6,7,8,9,0]) c = a**2 + b**3 return c print(npSum())
N维数组对象: ndarray
数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
设置专门的数组对象,经过优化,可以提升这类应用的运算速度
观察:科学计算中,一个维度所有数据的类型往往相同
数组对象采用相同的数据类型,有助于节省运算和存储空间
ndarray是一个多维数组对象,由两部分构成:
实际的数据
描述这些数据的元数据(数据维度,数据类型等)
ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始
s = numpy.array([[0,1,2,3,4],[9,8,7,6,5]])
print(s)
numpy.array()生成一个ndarray数组
ndarray在程序中的别名是array
numpy.array()输出成[]形式,元素有空格分割
轴(axis):保存数据的维度
秩(rank):轴的数量
排序
# 排序 s.sort()
切片
#数组[起始小标:最终下标+1] y = np.array([1,5,9,6,4,3]) a = s[1:3] # 1-2 # [5,9]
ndarray对象的属性
.ndim 秩,即轴的数量或维度的数量
.shape ndarray对象的尺度,对于矩阵,n行m列
.size ndarray对象的元素的个数,相当于。shape中n*m的值
.dtype ndarray对象的元素类型
.itemsize ndarray对象中每个元素的大小,以字节为为单位
ndarray的元素类型
bool 布尔类型,True或False
intc 与C语言中的int类型一致,一般是int32或int64
intp 用于索引的整数,与C语言中ssize_t一致,int32或int64
int8 字节长度的整数,取值:[-128,127]
int16 16位长度的整数,取值:[-32768,32767]
int32 31位长度的整数,取值:[-2*32,2*32-1]
int64 64位长度的整数,取值:[-2*63,2*63-1]
uint8 8位无符号整数,取值:[0,255]
uint16 16位无符号整数,取值:[0,65535]
uint32 32位无符号整数,取值:[0,2*32-1]
uint64 64位无符号整数,取值:[0,2*64-1]
float16 16位半精度浮点数:1位符号位,5位指数,10尾数
float32 32位半精度浮点数:1位符号位,8位指数,23尾数
float64 64位半精度浮点数:1位符号位,11位指数,52尾数
complex64 复数类型,实部和虚部都是32位浮点数
complex128 复数类型,实部和虚部都是64位浮点数
实部(.real) + j虚部(.imag)
ndarray为什么支持这么多种元素类型?
对比:python语法仅支持整数,浮点数和复数3种类型
科学计算涉及数据较多,对存储和性能都有较高要求
对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能
对元素类型精细定义,有助于程序员对程序规模有合理评估
x = numpy.array([[0,1,2,3,4],[9,8,7,6]])
ndarray数组可以由非同质对象构成
非同质ndarray元素为对象类型
非同质ndarray对象无法有效发挥Nu,Py优势,尽量避免使用
x.shape # 返回 (2,) 没有更进一步的分析 x.dtype #返回 dtype('o') o 是对象类型