Python-数据分析工具1-numpy

怎甘沉沦 提交于 2019-11-29 19:30:46

目录

1 ndarray数组

(0)ndarray数组属性

(1)创建基本数组

(2)创建特殊数组

(3)数组变换

(4)Numpy随机数函数

2 数组索引和切片

(0)数组切片:数组切片可以实现连续多元素选择

(1)数组索引

(2)布尔型索引

(3)花式索引

3 数组的运算

(0) 数组和标量间的运算(数组可以直接和标量进行算术、关系等运算)

(1)通用函数运算(一种可以对数组间执行元素级运算的函数)

(2)统计函数运算(对整个数组内或按指定轴向的数据进行统计)

(3)集合函数运算

(4)条件逻辑运算

(5)布尔型数组运算

4 数组的存取

5 图像变换


1 ndarray数组

(0)ndarray数组属性

(1)创建基本数组

1.首先导入numpy库   import  numpy  as np

2.然后使用构造函数:np.array(arg),参数arg可以是列表或者元组

3.可以通过列表或元组创建一维、二维或多维数组

4.获得dtype(元素类型)和shape(数组维度)属性:arr.dtype和arr.shape

5.创建数组时显示说明类型:np.array(list, dtype=“type”)

(2)创建特殊数组

1.创建全0数组函数

np.zeros((5,6)):创建指定长度或形状的全0数组。

np.zeros_like(a):创建与a对象相同尺寸的全0数组。a可以是列表、元组或者数组

2.全1数组

np.ones((5,6))

np.ones_like(a)

3.创建无确定值的空数组

np.empty((5,6)):创建指定长度或形状的无确定值(垃圾值)数组

np.empty_like(a):创建与a数组同尺寸的无确定值空数组。 a可以是列表、元组或者数组

4.创建等差数列。 

np.arange(start, end, step):创建以start开始,不超过end,步长为step的等差数列

5.创建单位阵

np.eye(n) 。创建nxn单位阵。元素类似是float64

np.identity(n) 。创建nxn单位阵。元素类似是float64。

(3)数组变换

1.数组重塑 (数组重塑不会改变原数组)

arr.reshape((5,6)) 方法改变其数据维度。传入的参数为新维度元组

数组散开arr. ravel ()和数值扁平化arr.flatten()都是将多维数组变成一维数组

2.数组合并

np.concatenate([arr1,arr2],axis=0/1);垂直合并,相当于axis=0;水平合并,相当于axis=1;

3.数组拆分

np.split(arr,(n1,n2,…,nk),axis=i)

当axis=0时,表示按行差分,从0到n1-1行拆为一个数组,n1到n2-1行为一个数组,…,nk到最后一行为一个数组。

当axis=1时,表示按列差分,从0到n1-1列拆为一个数组,n1到n2-1列为一个数组,…,nk到最后一列为一个数组。

4,数组转置

arr.transpose(1,0)

0表示垂直,1表示水平。在正常情况下,轴的元组应该是(0,1)。

若写成(1,0),则表示原来的水平转垂直,原来是垂直转水平。

5.轴对换

arr.swapaxes(axis1, axis2)

(4)Numpy随机数函数

2 数组索引和切片

(0)数组切片:数组切片可以实现连续多元素选择

假设数组为arr,其维度为(n1,n2,…,nk),则可以在每个维度中切片。

语法为arr[index1i:index1j, index2i:index2j, …, index_ni:index_nj]。

每个维度有个起始于index_ni,(从零开始)终止于index_nj, 且index_nj 取不到。 index_ni必须小于index_nj,否则返回空数组。

若切边索引超出维度并不报错,而是会和原维度的数组取交集。

若切片索引中包含正数和负数,则将正向索引的范围和反向索引的范围取交集。这种切边称为混合切片。

(1)数组索引

1.一维数组的索引

 一维数组通过下标索引。语法:arr[index],其中的index可正也可负。正向索引从0到length-1,反向索引从-1到-length

2.二维数组的索引

3.高维数组的索引

(2)布尔型索引

布尔数组的长度要与被索引的轴长度一致

datas是7行5列矩阵,而 fruits==‘pear’布尔数组长度为7,结果选择第2,4,6行(从0开始)。

1.datas[fruits==‘pear’]可以通过布尔型索引datas中的元素(输出对应位置为true的行)

2.布尔矩阵索引同形矩阵中的元素(输出对应位置为true的数)

3.布尔矩阵结合切片和索引(布尔矩阵选行,切片选列)

4.通过关系或逻辑运算得到布尔矩阵

关系运算:相等”==”、不等”!=”、大于”>”、大于等于”>=”、小于”<”、小于等于”<=”

逻辑运算:与”&”、或“|”,取反”~”

(3)花式索引

1.通过整数列表或数组进行索引

arr[arr1]------获得arr1数组中元素对应的arr的行

arr[arr1, arr2]------arr1数组和arr2数组中对应元素组合成位置坐标,从arr中取值

arr[arr1][arr2,arr3]------先根据arr1获得arr的行组成新矩阵,然后再根据arr2和arr3组成的坐标在新矩阵中寻找值。

arr[arr1][:,arr2]------先根据arr1获得arr的行组成新矩阵,然后再根据arr2中的索引找到列。

2.通过np.ix_函数进行索引

arr[np.ix_(arr1)]------获得arr1数组中元素对应的arr的行

arr[np.ix_(arr1, arr2)]------arr1数组和arr2数组中对应元素组合成位置坐标,从arr中取值

arr[np.ix_(arr1)][np.ix_(arr2)]------先根据arr1获得arr的行组成新矩阵,然后再根据arr2中的序号再得到行。

arr[np.ix_(arr1)][arr2, arr3]------先根据arr1获得arr的行组成新矩阵,然后再根据arr2和arr3组成的坐标在新矩阵中寻找值。

arr[np.ix_(arr1)][:,arr2]------先根据arr1获得arr的行组成新矩阵, 然后再根据arr2中的值寻找列

3 数组的运算

(0) 数组和标量间的运算(数组可以直接和标量进行算术、关系等运算)

(1)通用函数运算(一种可以对数组间执行元素级运算的函数)

(2)统计函数运算(对整个数组内或按指定轴向的数据进行统计)

方法

说明

sum

求和

mean

求均值

std、var

标准差和方差

min、max

最小和最大值

argmin、argmax

最小和最大元素的索引

cumsum

所有元素的累计和

cumprod

所有元素的累积乘积

sort 排序

(3)集合函数运算

方法

说明

unique(x)

唯一值

intersect1d(x,y)

求交集

union1d(x,y)

求并集

in1d(x,y)

判断x的元素是否在y中,返回布尔型数组

setdiff1d(x,y)

集合的差

setxor1d(x,y)

并集减去交集

(4)条件逻辑运算

(5)布尔型数组运算

4 数组的存取

np.savetxt(“文件名”, 待存储数组,fmt格式化字符串, delimiter分隔符)

np.loadtxt(“文件名”, delimiter分隔符)

5 图像变换

Python的PIL库用来处理图像,可以把图片转换为数组格式。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!