numpy学习三(本文章内容来自numpy中文文档)
通函数
NumPy提供熟悉的数学函数,例如sin,cos和exp。在NumPy中,这些被称为“通函数”(ufunc
)。在NumPy中,这些函数在数组上按元素进行运算,产生一个数组作为输出。
>>> B = np.arange(3) >>> B array([0, 1, 2]) >>> np.exp(B) array([ 1. , 2.71828183, 7.3890561 ]) >>> np.sqrt(B) array([ 0. , 1. , 1.41421356]) >>> C = np.array([2., -1., 4.]) >>> np.add(B, C) array([ 2., 0., 6.])
排序:axis:数组排序时的基准,axis=0,按列排序;axis=1,按行排序 。kind :数组排序时使用的方法,其中:kind='quicksort'为快排;‘mergesort’为混排;‘heapsort'为堆排。order :一个字符串或列表,可以设置某个属性进行排序。import numpy as np
>>> list1 = [[4,3,2],[2,1,4]] >>> array=np.array(list1) >>> array array([[4, 3, 2], [2, 1, 4]]) >>> array.sort(axis=1) >>> array array([[2, 3, 4], [1, 2, 4]]) # axis=1,说明是按照行进行排序,也就是说,每一行上的元素实现了递增, # 如[4, 3, 2]变为了[2, 3, 4],[2, 1, 4]变为了[1, 2, 4] >>> array.sort(axis=0) >>>> array array([[1, 2, 4], [2, 3, 4]]) # axis=0,说明是按照列进行排序,也就是说,每一列上的元素实现了递增, # 如[2, 1]变为了[1, 2],[3, 2]变为了[2, 3] >>>np.sort(array, axis=None) array([1, 2, 2, 3, 4, 4]) # 当axis=None,将所有元素统一排序
import numpy as np >>> dtype = [('Name', 'S10'), ('Height', float), ('Age', int)] >>> values = [('Li', 1.8, 41), ('Wang', 1.9, 38),('Duan', 1.7, 38)] >>> a = np.array(values, dtype=dtype) >>> np.sort(a, order='Height') # 按照属性Height进行排序,此时参数为字符串 array([('Duan', 1.7, 38), ('Li', 1.8, 41),('Wang', 1.9, 38)], dtype=[('Name', '|S10'), ('Height', '<f8'), ('Age', '<i4')]) >>> np.sort(a, order=['Age', 'Height']) # 先按照属性Age排序,如果Age相等,再按照Height排序,此时参数为列表 array([('Duan', 1.7, 38), ('Wang', 1.9, 38),('Li', 1.8, 41)], dtype=[('Name', '|S10'), ('Height', '<f8'), ('Age', '<i4')])
>>> a=[1,5,1,4,3,4,4] >>> b=[9,4,0,4,0,2,1] >>> np.lexsort((b,a)) # b在前,a在后,即是先按照a的元素进行比较 # 如a中的最小值为两个1,其索引分别为0,2,再计较b中相应索引上的值,即9,0 # 对应的最小应是:1,0,而其对应的索引为2,所以排序后返回的结果第一个值为索引2 # 下一个最小应是:1,9,而其对应的索引为0,所以排序后返回的结果第一个值为索引0 # 以此类推... array([2, 0, 4, 6, 5, 3, 1], dtype=int64) >>> np.lexsort((a,b)) # a在前,b在后,即是先按照b的元素进行比较 # 如b中的最小值为两个0,其索引分别为0,4,再计较a中相应索引上的值,即1,3 # 对应的最小应是:0,1,而其对应的索引为2,所以排序后返回的结果第一个值为索引2 # 下一个最小应是:0,3,而其对应的索引为4,所以排序后返回的结果第一个值为索引4 # 以此类推... array([2, 4, 6, 5, 3, 1, 0], dtype=int64) >>> c=[[1,5,1,4,3,4,4],[9,4,0,4,0,2,1]] >>> c [[1, 5, 1, 4, 3, 4, 4], [9, 4, 0, 4, 0, 2, 1]] >>> np.lexsort(c) # 此种情况与先b后a的情况一致 array([2, 4, 6, 5, 3, 1, 0], dtype=int64)
>>> list3=[1,2,3,4,5] >>> np.searchsorted(list3,2) 1 # 如若要在list3中插入元素2,则应当将其插在原列表索引为1的地方,即是插在元素1的后面 >>> np.searchsorted(list3,[-5,7,4,9]) array([0, 5, 3, 5], dtype=int64) # 如若要在list3中插入元素-5,则应当将其插在原列表索引为0的地方,即是插在元素1的前面 # 其他以此类推...
>>>list=[3,4,5,2,1] >>>np.partition(list,3) array([2, 1, 3, 4, 5]) # 以排序后的第3个数,即3进行分区,分区后的结果即是: # 小于3的元素2,1位于3的前面,大于等于3的元素4,5位于3的后面
sorted(iterable[, cmp[, key[, reverse]]]) sorted() 函数对所有可迭代的对象进行排序操作。 sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个 新的 list,而不是在原来的基础上进行的操作。 # sorted()可以利用参数reverse=True进行反向排序 >>>list=[3,4,2,6,1] >>>sorted(list) [1, 2, 3, 4, 6] >>>sorted(list, reverse=True) [6, 4, 3, 2, 1]
本文代码部分来自 原文链接:https://blog.csdn.net/haiyang_duan/article/details/79221458