NUMPY.SORT
ATTENTION :
axis = 0 代表行操作
axis =1 代表列操作
1.sort
par1:传入的数组 可以是多维
par2:沿着排序的轴 axis=-1 (x轴) axis =0 (y轴) 默认axis=-1
par3:提供的排序方法:quitsort heapsort timesort
如何降序排列:
x[::-1] 注意仅对一维数组有效
如果对二维数组 我采用的方法是遍历反转
具体代码如下
ff = np.array([[3, 6, 10, 2, 10], [2, 10, 3, 4, 5],[3,3,4,9,10]])
f1 = np.sort(ff)
for index in range(len(f1)):
print(f1[index][::-1])
2.lexsort()
def lexsort(keys, axis=None)
lexsort是一种多级排序方法。作用为对给定的 keys 中的最后一个 key 排序,每一个 key 都被认为是列向量,其他 keys 用来辅助最后一个 key 进行排序。最后返回最后一个 key 进行排序的索引。
计算的规则如下:
#a1 拍完后的索引 再个根据b来进行比较
#a1 = [80,70,90,100,100] => [70,80,90,100,100] => (1,0,2,3,4)
a1 = [80,70,90,100,100]
b1 = [77,92,88,95,92]
cc = np.lexsort((b1,a1))
# cause 95>92
# return [1 0 2 4 3] index
3.sort_complex()
对复数进行排序
4.searchsorted()
二分查找用于查找所需的插入点
从 NumPy 1.4.0 开始searchsorted,可以使用包含 nan值的实数/复数数组。增强的排序顺序记录在sort.
bisect.bisect_left 此函数使用与内置 python ( side=’left’) 和bisect.bisect_right( ) 函数相同的算法,该算法side=’right’也在_v_参数中进行了矢量化。
关于二分查找需要一定要考虑好左右边界
测试效率:
import time
time_start = time.time()
【put your codes in here】
time_end = time.time()
time_sum = time_end - time_start
print(time_sum)
NUMPY INSERT/DELETE
quick start
numpy.append(arr, values, axis=None)
如果没有给定axis 则会将数组完全展开
a = np.array([[1,4,4,5,6],[2,3,3,4,5]])
c = np.append(a,[[3,4,5,6,7],[1,2,3,4,5]],axis=1)
print(c)
numpy.insert(arr, obj, values, axis)
参数说明:
arr:输入数组
obj:在其之前插入值的索引
values:要插入的值
axis:沿着它插入的轴,如果未提供,则输入数组会被展开
Numpy.delete(arr, obj, axis)
参数说明:
arr:输入数组
obj:可以被切片,整数或者整数数组,表明要从输入数组删除的子数组
axis:沿着它删除给定子数组的轴,如果未提供,则输入数组会被展开