分享

numpy库入门

 LARGESTATION 2017-11-14
1、维度
一维数据:有对等关系的有序或无序数据构成,采用线性方式组织
列表,数组,集合等概念
python表示 :列表和集合
二维数据:多个一维数据构成,一维数据组合形式
表格是典型的二维数据
python表示:列表
多维数据:一维或二维在新维度上扩展形成
python表示;列表
高维数据:
python表示:字典或数据表示的格式
列表和数组区别:一组数据有序结构
列表中,元素数据类型可以不同
数组中,元素数据类型相同
2、Numpy:一个开源的科学计算基础库,是Scipy,Pandas的数据处理或科学计算库的基础
一个强大的N维数组对象 ndarray
` 广播功能函数
整合c/c++/fortran代码的工具
线性代数、傅里叶变换、随机数生成等功能

3、使用方法:
import numpy as np(from numpy import *)
4、N维数组对象:ndarray
两部分组成:
&实际数据
&描述这些数据的元数据(数据维度,数据类型等)
 ndarry数据一般要求所有元素类型相同(同质),数组下标从0开始
非同质ndarray元素为对象类型
非同质ndarray无法发挥Numpy的优势,尽量避免使用
特性:
轴(axis):保存数据的维度
秩(rank)轴的数量
.ndim 秩,轴或维度数量
.shape   ndarray对象的尺度,对于矩阵,n行,m列
.size    ndarray对象元素的个数,相当于.shape中m*n的值
.dtype   ndarrayd对象元素类型
.itemsize  ndarray对象中每个元素大小,以字节为单位
支持类型:
bool  True or False uint8 [0~255]
intc 与c语言的int类型一致 uint16 [0~65535]
intp 用于索引的整数与c语言中的sszie_t一致,int32或64 uint32 [0~2^31-1]
int8 [-128~127]           uint64 [0~2^63-1]
int16 [-32768~32767] float16:1位符号位,5位指数位,10尾数
int32 [-2^31~2^31-1] float32:1位符号位,8位指数位,23位尾数
int64 [-2^63~2^31-1] float64:1位符号位,11位指数位,52位尾数 

complex64 复数,实部和虚部都是32位浮点数
complex128  实部和虚部都是64位的浮点数
ndarray元素类型对比python仅仅支持的整形,浮点型和复数三种类型:
对科学计算涉及数据较多,对存储和性能都有较高的要求
对类型的精确定义,有助于Numpy合理的使用存储空间并优化性能
对元素类型精细的定义,有助于程序员对程序规模有合理的评估
5、ndarray的创建方法:
(1)从Python中的列表、元组等类型创建ndarray数组
>>>x = np.arrray(list/tuple)
>>>x = np.array(list/tuple,dtype = np.float32)
     当np.array()不指定类型时,Numpy将根据数据情况关联一个dtype类型
(2)使用Numpy中函数创建ndarrray数组,如 arange,ones,zeros等。
>>>np.arrange(n)  
功能类似range(),返回ndarray类型,元素0-(n-1)
>>>np.ones(shape)
生成一个全1数组,shape是元组类型ones=(1,1)
>>>np.zeros(shape)   
生成一个全零数组
>>>np.full(shape,val) 
生成一个数组,每个元素值都是val
>>>np.eye(n)     
创建一个n*n的单位对角矩阵,对角线为1,其余全为0
>>>np.ones_like(a) 
根据数组a的形状n*m生成一个全1数组
>>>np.zeros_like(a) 
根据数组a的形状生成一个全零数组
>>>np.full_like(a,val) 
根据数组a的形状生成一个数组,每个元素都是val
>>>np.linspace(1,10,4,endpoint=False)
根据起止数据1,10等间隔的填充数据4个,形成数组endpoint=false代表不将 10包含
>>>np.concatenate()
将两个或则多个数组合并成一个数组
(3)从字节流(raw bytes)中创建ndarray
(4)从文件中读取特定格式,创建ndarray数组
6、数组维度的变换:
.reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变
.resize(shape)  与.reshape()功能一致,但是修改原数组
.swapaxes(ax1,ax2)将数组n个维度中的两个进行调换
.flatten()      对数组进行降维,返回折叠后的以为数组,原数组不变
7、ndarray数组类型变换
.astype(dtype)
new_a=a.astype(new_type) 
原数组a的数据类型转换为new_type,并且保存在新创建的new_a数组中
8、ndarray数组向列表转换:
ls = a.tolist()
&.ndarray的操作
数组的索引和切片
索引:获取数组中特定位置元素的过程
切片:获取数组元素子集的过程

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多