Code前端首页关于Code前端联系我们

NumPy 教程:排序、搜索和计数比较和示例

terry 2年前 (2023-09-25) 阅读数 52 #后端开发

NumPy - 排序、搜索和计数

NumPy 中提供了各种与排序相关的函数。这些分类任务实现不同的分类算法,每种算法的特点是执行速度、最坏情况性能、所需的工作空间和算法稳定性。下表显示了三种分类算法的比较。类型 O(n^2)

0否 '合并排序'(合并排序)2O(n*log(n))~n/2 是 'heapsort'(heapsort'p0O(n*log(n))0No

numpy.sort()

sort() 该函数返回文件编号的副本,包含以下参数:

numpy.sort(a, axis, kind, order)
Python

其中:

序列号 参数及定义
1.
2. 轴表示曲目编号,如果没有需要扩展的编号,则排列在最后一个轴之后
3.kind 默认 默认”t
(快速计数)
4.命令如果数组包含字段,则要排序的字段

例如。numpy.argsort()

numpy.argsort()函数进行间接排序。给定轴的输入编号,并使用指定类型返回数据编号。该索引数组用于构造选定的编号。

示例

import numpy as np 
x = np.array([3,  1,  2])  
print  '我们的数组是:'  
print x 
print  '\n'  
print  '对 x 调用 argsort() 函数:' 
y = np.argsort(x)  
print y 
print  '\n'  
print  '以排序后的顺序重构原数组:'  
print x[y]  
print  '\n'  
print  '使用循环重构原数组:'  
for i in y:  
    print x[i],
Python

输出如下:

我们的数组是:
[3 1 2]

对 x 调用 argsort() 函数:
[1 2 0]

以排序后的顺序重构原数组:
[1 2 3]

使用循环重构原数组:
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  '调用 lexsort() 函数:'  
print ind 
print  '\n'  
print  '使用这个索引来获取排序后的数据:'  
print  [nm[i]  +  ", "  + dv[i]  for i in ind]
Python

输出如下:

调用 lexsort() 函数:
[3 1 0 2]

使用这个索引来获取排序后的数据:
['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  '我们的数组是:'  
print a 
print  '\n'  
print  '调用 argmax() 函数:'  
print np.argmax(a)  
print  '\n'  
print  '展开数组:'  
print a.flatten()  
print  '\n'  
print  '沿轴 0 的最大值索引:' 
maxindex = np.argmax(a, axis =  0)  
print maxindex 
print  '\n'  
print  '沿轴 1 的最大值索引:' 
maxindex = np.argmax(a, axis =  1)  
print maxindex 
print  '\n'  
print  '调用 argmin() 函数:' 
minindex = np.argmin(a)  
print minindex 
print  '\n'  
print  '展开数组中的最小值:'  
print a.flatten()[minindex]  
print  '\n'  
print  '沿轴 0 的最小值索引:' 
minindex = np.argmin(a, axis =  0)  
print minindex 
print  '\n'  
print  '沿轴 1 的最小值索引:' 
minindex = np.argmin(a, axis =  1)  
print minindex
plaython

to 如下:

我们的数组是:
[[30 40 70]
 [80 20 10]
 [50 90 60]]

调用 argmax() 函数:
7

展开数组:
[30 40 70 80 20 10 50 90 60]

沿轴 0 的最大值索引:
[1 2 0]

沿轴 1 的最大值索引:
[2 0 1]

调用 argmin() 函数:
5

展开数组中的最小值:
10

沿轴 0 的最小值索引:
[0 1 1]

沿轴 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  '我们的数组是:'  
print a 
print  '\n'  
print  '调用 nonzero() 函数:'  
print np.nonzero (a)
Python

输出如下:

我们的数组是:
[[30 40 0]
 [ 0 20 10]
 [50 0 60]]

调用 nonzero() 函数:
(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  '我们的数组是:'  
print x 
print  '大于 3 的元素的索引:' 
y = np.where(x >  3)  
print y 
print  '使用这些索引来获取满足条件的元素:'  
print x[y]
Python

输出如下:

我们的数组是:
[[ 0. 1. 2.]
 [ 3. 4. 5.]
 [ 6. 7. 8.]]

大于 3 的元素的索引:
(array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))

使用这些索引来获取满足条件的元素:
[ 4. 5. 6. 7. 8.]

numpy.extract()

extract()‹

import numpy as np 
x = np.arange(9.).reshape(3,  3)  
print  '我们的数组是:'  
print x 
# 定义条件 
condition = np.mod(x,2)  ==  0  
print  '按元素的条件值:'  
print condition 
print  '使用条件提取元素:'  
print np.extract(condition, x)
Python

The输出如下:

我们的数组是:
[[ 0. 1. 2.]
 [ 3. 4. 5.]
 [ 6. 7. 8.]]

按元素的条件值:
[[ True False True]
 [False True False]
 [ True False True]]

使用条件提取元素:
[ 0. 2. 4. 6. 8.]

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门