目录
(0) 数组和标量间的运算(数组可以直接和标量进行算术、关系等运算)
(2)统计函数运算(对整个数组内或按指定轴向的数据进行统计)
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库用来处理图像,可以把图片转换为数组格式。
来源:https://blog.csdn.net/qq_35350265/article/details/100892292