源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

浅谈numpy数组的几种排序方式

  • 时间:2022-08-18 09:01 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:浅谈numpy数组的几种排序方式
[b]简单介绍[/b] NumPy系统是Python的一种开源的数组计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。 [b]创建数组[/b] 创建1维数组: [code]data = np.array([1,3,4,8]) [/code]  查看数组维度 [code]data.shape[/code] 查看数组类型 [code]data.dtype[/code] 通过索引获取或修改数组元素 [code]data[1] 获取元素 data[1] = 'a' 修改元素 [/code]  [b]创建二维数组[/b] [code]data = np.array([[1,2,3],[4,5,6]])[/code] 两个元素均为列表<br>2.data = np.arange(10) 与python的range一样,range返回列表,arange返回array类型的一个数组<br>3.data2 = data.reshape(2,5) 返回一个2*5的数组,他不是拷贝数组是引用,只是返回数组的不同视图,data改变data2也会改变 [b]创建特殊数组 [/b] [code]data = np.zeros((2,2)) 创建2*2全为0的2维数组 data = np.ones((2,3,3,)) 创建全为1的三维数组 data = np.eye(4) 创建4*4的对角数组,对角元素为1,其它都为0 [/code] [b]数组转换[/b] [code]data = np.arange(16).reshape(4,4) 将0-16的移位数组转换为4*4的数组 [/code]  [b]排序方式[/b] 说明:经常需要对数组或者list进行排序,python提供了好几种排序的函数,下面说明下特点; 二维数组a:
1 4
3 1
1、[code]ndarray.sort(axis=-1,kind='quicksort',order=None)[/code] 使用方法:a.sort 参数说明: axis:排序沿着数组的方向,0表示按行,1表示按列 kind:排序的算法,提供了快排、混排、堆排 order:不是指的顺序,以后用的时候再去分析这个 作用效果:对数组a排序,排序后直接改变了a 例如:
>>a.sort(axis=1)
>>print a
1 4
1 3
2、[code]numpy.sort(a,axis=-1,kind='quicksort',order=None)[/code] 使用方法:[code]numpy.sort(a)[/code] 参数说明: a:要排序的数组,其他同1 作用效果:对数组a排序,返回一个排序后的数组(与a相同维度),a不变 例如:
>>print numpy.sort(a,axis=1)
1 4
1 3
>>print a
1 4
3 1
3、numpy.argsort(a,axis=-1,kind='quicksort',order=None) 使用方法:numpy.argsort(a) 参数说明:同2 作用效果:对数组a排序,返回一个排序后索引,a不变 例如:
>>print numpy.argsort(a,axis=1)
0 1
1 0
4、[code]sorted(iterable,cmp=None,key=None,reverse=False)[/code] 说明:内置的排序函数,对list,字典等等可以使用 iterable:是可迭代类型; cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项; key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项; reverse:排序规则.reverse=True或者reverse=False,默认False(从小到大)。 返回值:是一个经过排序的可迭代类型,与iterable一样; 例如:b是一个字典 b: {'a':2,'c':1,'b':3} 对b进行排序:
>>c=sorted(b.iteritems(),key=operator.itemgetter(1),reverse=False)
>>print c[('c', 1), ('a', 2), ('b', 3)]
可见:返回的是一个list [b]总结[/b] 以上就是本文关于浅谈numpy数组的几种排序方式的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部