您的位置:首页 > 编程语言 > Python开发

Python Numpy 入门

2017-10-26 00:04 357 查看
numpy是一个基础的进行科学计算的第三方库

一、数据维度

一维数据:

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

例如:3.1413, 3.1398, 3.1468,3.1349,3.1376

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

一维数据的有序结构

列表:数据类型可以不同

数组:数据类型相同

二维数据

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

例如:表格就是一个典型的二维数据

高维数据

利用最基本的二元关系展示数据见的复杂结构,例如键值对

数据维度的python表示

一维数据: 列表(有序)和集合(无序)类型

二维数据:列表类型

三维数据:列表类型

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

例如JSON、XML、YAML

二、NumPy的数组对象: ndarray

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

1.一个强大的N维数组对象 ndarray

2.广播功能函数

3.整合c/c++/Fortran代码的工具

4.线性代数、傅里叶变换、随机数生成等功能

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

NumPy的引用

import numpy as np (引入模块的别名)

尽管别名可以省略或更改,建议使用上述约定的别名

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

1.数组对象可以去掉原书记安运算所需的循环,使一维向量更像单个数据

2.设置专门的数组对象,经过优化,可以提升这类应用的运算速度

观察:科学计算中,一个维度所有的数据类型往往相同

3.数据对象采用相同的数据类型,有足浴节省运算和存储空间

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

1.实际的数据

2.描述这些数据的元数据(数据维度、数据类型等)

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

ndarray在程序中的别名是:array

可用np.array()生成一个 ndarray数组

np.array()输出成[] 形式,元素由空格分割

import numpy as np

使用 Anaconda中的IPython进行学习

import numpy as np

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


三、ndarray对象的属性

(1) .ndim : 轴的数量或维度的数量

(2) .shape : ndarray对象的尺度,对于矩阵,n行m列

(3) .size : ndarray对象袁术的个数,相当于 .shape中 n*m的值

(4) .dtype : ndarray对象的元素类型

(5) .itemsize : ndarray对象中每个元素的大小

ndarray实例:

a.ndim
Out[35]: 2

a.shape
Out[36]: (2, 5)

a.size
Out[37]: 10

a.dtype
Out[38]: dtype('int32')

a.itemsize
Out[39]: 4


三、ndarray的元素类型

bool:布尔类型,True或False

intc : 与C语言中的int类型一致,一般是int32 或者 64

intp : 用于索引的整数, 与C语言中的ssize_t 一致,int32或int64

int8 : 字节长度的整数

int16: 16位长度的整数

int32 : 32位长度的整数

int64 :64位长度的整数

uint8 : 8位无符号整数

uint16:16位无符号整数

uint32 : 32位无符号整数

uint64 : 64位无符号整数

float16 :16位半精度浮点数

float32 : 32位半精度浮点数

float64 : 64位半精度浮点数

complex64 复数类型,实部和虚部都是32位浮点数

complex128 复数类型,实部和虚部都是64位浮点数 (real + j*imag)

四、ndarray数组的创建方法

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() : 根据起止数据间距滴填充数据,形成数组

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

五、ndarray数组的维度变换

.reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变

.resize(shape) 与 .reshape()功能一致,但修改原数组

.swapaxes(ax1,ax2) 将数组n个维度中两个维度进行调换

.flatten() : 对数组进行降维,返回折叠后的一堆数组,原数组不变

ndarray数组类型变换

astype()方法一定会创建新的数组(原始数据的一个拷贝),即使两个类型一致

new_a = a.astype(new_type)

ndarray数组向列表的转换

ls = a.tolist()

六、ndarray数组操作

数组的索引和切片

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

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

一维数组的索引和切片:与python的列表类型

b = np.array([9, 8, 6, 5])

b[2]

Out[5]: 6

b[1 : 4 : 2]

Out[6]: array([8, 5])

多维数组的切片

1.选取一个维度用 :

2.每个维度的切片方法与一维数组相同

3.每个维度可以使用补偿跳跃切片

七、ndarray数组的运算

a.mean() : 计算a与袁术平均值的商

np.abs(x) np.fabs(x) : 计算数组各元素的绝对值

np.sqrt(x) : 计算数组各元素的平方根

np.square(x) :计算数组各元素的平方

np.log(x) np.log10(x) np.log2(x) 计算数组各元素的自然对数、10底对数和2底对数

np.ceill(x) np.floor(x) 计算数组各元素ceiling值 或 floor值

Numpy一元函数

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.fmin()

np.minimum(x,y) np.fmin() 元素级的最大值/最小值计算

np.mod(x, y) 元素级的模运算

np.copysign(x, y) 将数组y中各元素值的符号复制给数组x对应元素

< >= <= == != 算数比较,产生布尔型数组

喜欢python的小伙伴可以关注我公众号

纯干货技术分享:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python numpy 科学计算