1.数组的操作
1)numpy.ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。
2)numpy.ndarray.flat 将数组转换为一维的迭代器,可以用for访问数组每一个元素。
3)numpy.ndarray.flatten([order=‘C’]) 将数组的副本转换为一维数组,并返回。
a. order:‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘k’ – 元素在内存中的出现顺序。(简记)b. order:{'C / F,'A,K},可选使用此索引顺序读取a的元素。'C’意味着以行大的C风格顺序对元素进行索引,最后一个轴索引会更改F
表示以列大的Fortran样式顺序索引元素,其中第一个索引变化最快,最后一个索引变化最快。请意,'C’和’F’选项不考虑基础数组的内存布局,仅引用轴索引的序.A’表示如果a为Fortran,则以类似Fortran的索引顺序读取元素在内存中连续,否则类似C的顺序。“ K”表示按照步序在内存中的顺序读取元素,但步幅为负时反转数据除外。默认情况下,使用Cindex顺序。
4)numpy.ravel(a, order=‘C’)
Return a contiguous flattened array.
ravel() 返回的是视图。
order=‘F’ 就是拷贝
5)numpy.reshape(a, newshape[, order=‘C’]) 在不更改数据的情况下为数组赋予新的形状。
reshape() 函数当参数 newshape = [rows,-1] 时,将根据行数自动确定列数。
reshape() 函数当参数 newshape = -1 时,表示将数组降为一维。
2.数组的转置
1)numpy.transpose(a, axes=None) Permute the dimensions of an array.
2)numpy.ndarray.T Same as self.transpose() , except that self is returned if self.ndim < 2 .
3.更改维度
1)numpy.newaxis = None None 的别名,对索引数组很有用。
【例】很多工具包在进行计算时都会先判断输入数据的维度是否满足要求,如果输入数据达不到指定的维度时,可以使用 newaxis 参数来增加一个维度。
2)numpy.squeeze(a, axis=None) 从数组的形状中删除单维度条目,即把shape中为1的维度去掉。
a) a 表示输入的数组;
b) axis 用于指定需要删除的维度,但是指定的维度必须为单维度,否则将会报错;
在机器学习和深度学习中,通常算法的结果是可以表示向量的数组(即包含两对或以上的方括号形式[[]]),如果直接利用这个数组进行画图可能显示界面为空(见后面的示例)。我们可以利用 squeeze() 函数将表示向量的数组转换为秩为1的数组,这样利用 matplotlib 库函数画图时,就可以正常的显示结果了。
4.数组组合
1)numpy.concatenate((a1, a2, …), axis=0, out=None) Join a sequence of arrays along an existing axis.
axis=0 我的理解是沿着X.shape里面的第一个维度拼接
axis=1 我的理解是沿着X.shape里面的第二个维度拼接
【例】连接沿现有轴的数组序列(原来x,y都是一维的,拼接后的结果也是一维的)。
【例】原来x,y都是二维的,拼接后的结果也是二维的。
【例】x,y在原来的维度上进行拼接。
2)numpy.stack(arrays, axis=0, out=None)
Join a sequence of arrays along a new axis.
【例】沿着新的轴加入一系列数组(stack为增加维度的拼接)。
3)numpy.vstack(tup)
Stack arrays in sequence vertically (row wise).
numpy.hstack(tup)
Stack arrays in sequence horizontally (column wise)
【例】二维的情况。
hstack(),vstack() 分别表示水平和竖直的拼接方式。在数据维度等于1时,比较特殊。而当维度大于或等于2时,它们的作用相当于 concatenate ,用于在已有轴上进行操作。
5. 数组拆分
1)numpy.split(ary, indices_or_sections, axis=0)
Split an array into multiple sub-arrays as views into ary.
indices_or_sections:如果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置(左开右闭)
axis:沿着哪个维度进行切向,默认为0,横向切分。为1时,纵向切分
【例】拆分数组。
2)numpy.vsplit(ary, indices_or_sections)
Split an array into multiple sub-arrays vertically (row-wise).
3)numpy.vsplit(ary, indices_or_sections)
Split an array into multiple sub-arrays vertically (row-wise).
【例】垂直切分是把数组按照高度切分
4)numpy.hsplit(ary, indices_or_sections) Split an array into multiple sub-arrays horizontally (column-wise).
【例】水平切分是把数组按照宽度切分。
6.数组平铺
1)numpy.tile(A, reps)
Construct an array by repeating A the number of times given by reps.
tile 是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来。
【例】将原矩阵横向、纵向地复制。
2)numpy.repeat(a, repeats, axis=None) Repeat elements of an array.
a. axis=0 ,沿着y轴复制,实际上增加了行数。
b. axis=1 ,沿着x轴复制,实际上增加了列数。
c. repeats ,可以为一个数,也可以为一个矩阵。
d. axis=None 时就会flatten当前矩阵,实际上就是变成了一个行向量。
【例】重复数组的元素。
7.添加和删除元素
1)1. numpy.unique(ar, return_index=False, return_inverse=False,return_counts=False, axis=None) 对于一维数组或者列表,unique函数去除其中重复的元素,并按元素由大到小返回一个新的无元素重复的元组或者列表
a. return_index=True表示返回新列表元素在旧列表中的位置,并以列表形式储存在s中。
b. return_inverse=True 表示返回旧列表元素在新列表中的位置,并以列表形式储存在p中
c. return_counts:the number of times each unique value comes up in the input array