NumPy排序,搜索和计数功能 NumPy统计函数 NumPy字节交换 NumPy提供了各种与分类相关的功能。这些排序功能实现了不同的排序算法,每种排序算法都以执行速度,最差情况下的性能,所需的工作空间以及算法的稳定性为特征。下表显示了三种排序算法的比较。 分类 速度 最坏的情况下 工作空间 稳定 “快速排序” 1 为O(n ^ 2) 0 没有 “归并” 2 O(N `*`的log(n)) 〜n / 2个 是 “堆排序” 3 O(N *的log(n)) 0 没有 numpy.sort() sort()函数返回输入数组的有序副本。它有以下参数 - numpy.sort(a, axis, kind, order) 哪里, Sr.No. 参数和说明 1 a 数组进行排序 2 axis 要排序数组的轴。如果没有,则数组将变平,并在最后一个轴上排序 3 kind 默认是快速排序 4 order 如果数组包含字段,则要排序字段的顺序 例 import numpy as np a = np.array([[3,7],[9,1]]) print 'Our array is:' print a print '\n' print 'Applying sort() function:' print np.sort(a) print '\n' print 'Sort along axis 0:' print np.sort(a, axis = 0) print '\n' # Order parameter in sort function dt = np.dtype([('name', 'S10'),('age', int)]) a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt) print 'Our array is:' print a print '\n' print 'Order by name:' print np.sort(a, order = 'name') 它会产生以下输出 - Our array is: [[3 7] [9 1]] Applying sort() function: [[3 7] [1 9]] Sort along axis 0: [[3 1] [9 7]] Our array is: [('raju', 21) ('anil', 25) ('ravi', 17) ('amar', 27)] Order by name: [('amar', 27) ('anil', 25) ('raju', 21) ('ravi', 17)] numpy.argsort() 所述 numpy.argsort() 函数执行输入阵列上的间接排序,沿给定轴,并使用特定种类排序返回的数据的索引的数组。这个索引数组用于构造排序后的数组。 例 import numpy as np x = np.array([3, 1, 2]) print 'Our array is:' print x print '\n' print 'Applying argsort() to x:' y = np.argsort(x) print y print '\n' print 'Reconstruct original array in sorted order:' print x[y] print '\n' print 'Reconstruct the original array using loop:' for i in y: print x[i], 它会产生以下输出 - Our array is: [3 1 2] Applying argsort() to x: [1 2 0] Reconstruct original array in sorted order: [1 2 3] Reconstruct the original array using loop: 1 2 3 numpy.lexsort() 函数使用一系列键执行间接排序。这些键可以看作电子表格中的一列。该函数返回一个索引数组,使用该索引可以获取排序后的数据。请注意,最后一个键恰好是排序的主键。 例 import numpy as np nm = ('raju','anil','ravi','amar') dv = ('f.y.', 's.y.', 's.y.', 'f.y.') ind = np.lexsort((dv,nm)) print 'Applying lexsort() function:' print ind print '\n' print 'Use this index to get sorted data:' print [nm[i] + ", " + dv[i] for i in ind] 它会产生以下输出 - Applying lexsort() function: [3 1 0 2] Use this index to get sorted data: ['amar, f.y.', 'anil, s.y.', 'raju, f.y.', 'ravi, s.y.'] NumPy模块有一些用于在数组内搜索的函数。用于查找最大值,最小值以及满足给定条件的元素的函数是可用的。 numpy.argmax()和numpy.argmin() 这两个函数分别沿给定的轴返回最大和最小元素的索引。 例 import numpy as np a = np.array([[30,40,70],[80,20,10],[50,90,60]]) print 'Our array is:' print a print '\n' print 'Applying argmax() function:' print np.argmax(a) print '\n' print 'Index of maximum number in flattened array' print a.flatten() print '\n' print 'Array containing indices of maximum along axis 0:' maxindex = np.argmax(a, axis = 0) print maxindex print '\n' print 'Array containing indices of maximum along axis 1:' maxindex = np.argmax(a, axis = 1) print maxindex print '\n' print 'Applying argmin() function:' minindex = np.argmin(a) print minindex print '\n' print 'Flattened array:' print a.flatten()[minindex] print '\n' print 'Flattened array along axis 0:' minindex = np.argmin(a, axis = 0) print minindex print '\n' print 'Flattened array along axis 1:' minindex = np.argmin(a, axis = 1) print minindex 它会产生以下输出 - Our array is: [[30 40 70] [80 20 10] [50 90 60]] Applying argmax() function: 7 Index of maximum number in flattened array [30 40 70 80 20 10 50 90 60] Array containing indices of maximum along axis 0: [1 2 0] Array containing indices of maximum along axis 1: [2 0 1] Applying argmin() function: 5 Flattened array: 10 Flattened array along axis 0: [0 1 1] Flattened array along axis 1: [0 2 0] numpy.nonzero() 所述 numpy.nonzero() 函数返回输入数组中的非零元素的索引。 例 import numpy as np a = np.array([[30,40,0],[0,20,10],[50,0,60]]) print 'Our array is:' print a print '\n' print 'Applying nonzero() function:' print np.nonzero (a) 它会产生以下输出 - Our array is: [[30 40 0] [ 0 20 10] [50 0 60]] Applying nonzero() function: (array([0, 0, 1, 1, 2, 2]), array([0, 1, 1, 2, 0, 2])) numpy.where() where()函数返回满足给定条件的输入数组中元素的索引。 例 import numpy as np x = np.arange(9.).reshape(3, 3) print 'Our array is:' print x print 'Indices of elements > 3' y = np.where(x > 3) print y print 'Use these indices to get elements satisfying the condition' print x[y] 它会产生以下输出 - Our array is: [[ 0. 1. 2.] [ 3. 4. 5.] [ 6. 7. 8.]] Indices of elements > 3 (array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2])) Use these indices to get elements satisfying the condition [ 4. 5. 6. 7. 8.] numpy.extract() 的 提取物() 函数返回满足任何条件的元素。 import numpy as np x = np.arange(9.).reshape(3, 3) print 'Our array is:' print x # define a condition condition = np.mod(x,2) == 0 print 'Element-wise value of condition' print condition print 'Extract elements using condition' print np.extract(condition, x) 它会产生以下输出 - Our array is: [[ 0. 1. 2.] [ 3. 4. 5.] [ 6. 7. 8.]] Element-wise value of condition [[ True False True] [False True False] [ True False True]] Extract elements using condition [ 0. 2. 4. 6. 8.] NumPy统计函数 NumPy字节交换