NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy可以很自然的使用数组合矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。
roll
沿给定轴滚动数组元素。超出最后位置的元素将在第一个位置重新引入。
numpy.roll(a, shift, axis=None)
参数:
- a: array_like
输入数组 - shift:int或int类型的tuple
元素移位的位置数。如果是一个元组,那么轴必须是一个相同大小的元组,并且每个给定轴被相应的数字移动。如果值是int当axis是int类型的tuple,那么对所有给定的轴使用相同的值。 - axis:int或int类型的tuple
可选元素沿其移动的一个或多个轴。默认情况下,在移动之前将阵列弄平,然后恢复原始形状。
返回值:
- res:ndarray
输出数组,shape与a相同。
rot90
在轴指定的平面中将array旋转90度。旋转方向是从第一个轴到第二个轴。
numpy.rot90(m, k=1, axes=(0, 1))
参数:
- m:array_like
二维或二维数组 - k:integer
阵列旋转90度的次数 - axes:(2:)array_like
array在轴定义的平面中旋转。轴必须不同。
返回值:
- y:ndarray
m的旋转视图
min/max
传入一个a,并取a在axis方向上的最小值最大值。
np.max(a, axis=None, out=None, keepdims=False)
np.min(a, axis=None, out=None, keepdims=False)
minimum/maximum
传入两个x和y,x和y逐位比较取最小值最大值。
np.maximum(x, y, out=None)
np.minimum(x, y, out=None)
lexsort
实现对数组或列表按照某一行或列进行排序。按照一个键值序列提供一个间接稳定的排序。
lexsort(keys, axis=-1)
-
利用lexsort对二维数组按照某一行排序
lexsort的键参数是二维数组时,对行排序,排序的方式是先对最后一行排序,当有相同元素时,然后按照倒数第二行对应的元素排序,……依次类推。
例如:a1返回的是a的最后一行按照从小到大排列后所对应的索引值,比如最后一行为[6,2,9,5],从小到大排列为:2,5,6,9;其对应的索引号为:1,3,0,2.
如果对a按照第二行升序排列,当有相同项时按照第一行升序排序.import numpy as np a = np.array([[1,2,1,5],[5,3,6,9],[6,2,9,5]]) a.shape a #对a按照最后一行排序 a1 = np.lexsort(a) a1 a.T[a1].T #或者 a[:, a1] #对a按照最后一行排序2 a4 = np.lexsort(a[-1, None]) a4 a.T[a4].T #对a按照第二行升序排列,当有相同项时按照第一行升序排序 a2 = np.lexsort(a[0:2, :]) a2 a.T[a2].T #或者 a[:, a2] #对a按照第一行排序 a3 = np.lexsort(a[::-1, :]) a3 a.T[a3].T #或者 a[:, a3] #对a按照第一行排序2 a5 = np.lexsort(a[0, None]) a5
-
利用lexsort对二维数组按照某一列排序
只需将数组矩阵做转置,将列变成行,行变成列就可以了。例如:对a矩阵按照第二列升序排列,当遇到相同元素时按照第一列升序排列。首先对a矩阵装置,这样矩阵的列变成了行,然后在对行按照第二行升序的方式排列,都获取相应的序列编号。a = np.array([[1,2,1,5],[5,3,6,9],[6,2,9,5]]) a.shape a #按最后一列顺序排序 a1 = np.lexsort(a.T) a1 a[a1] #或者 a[a1, :] #按最后一列顺序排序2 a5 = np.lexsort(a.T[-1, None]) a5 a[a5] #按最后一列逆序排序 a2 = np.lexsort(-a.T) a2 a[a2] #或者 a[a2, :] #按第二列升序排序,当遇到相同元素按照第一列升序排列 a3 = np.lexsort(a.T[:2, :]) a3 a[a3] #或者 a[a3, :] #按照第一列排序 a4 = np.lexsort(a[:, ::-1].T) a4 a[a4] #或者 a[a4, :] #按照第一列排序2 a6 = np.lexsort(a.T[0, None]) a6 a[a6]
set_printoptions
set_printoptions(precision=None, threshold=None, edgeitems=None,
linewidth=None, suppress=None, nanstr=None, infstr=None)
#全部打印
np.set_printoptions(threshold=sys.maxsize)
参考资料
1.Python numpy.roll函数方法的使用
2.Python numpy.rot90函数方法的使用
3.python中np.max与np.maximum的区别
4.Python实现二维数组按照某行或列排序的方法【numpy lexsort】
5.用python中的numpy.lexsort()对矩阵按照某行(列)排序
6.lexsort对二维矩阵某行某列进行排序
7.np.set_printoptions的相关属性