python 数组排序索引_python对数组进行排序,并输出排序后对应的索引值方式

python对数组进行排序,并输出排序后对应的索引值方式

废话不多说,直接上代码吧!

# -*- coding: cp936 -*-

import numpy as np

#一维数组排序

arr = [1, 3, 5, 2, 4, 6]

arr = np.array(arr)

print arr

print np.sort(arr)#或print np.sort(arr,axis=None)

print (np.argsort(arr)) # 正序输出索引,从小到大

print (np.argsort(-arr)) # 逆序输出索引,从大到小

输出结果:

[1 3 5 2 4 6]

[1 2 3 4 5 6]

[0 3 1 4 2 5]

[5 2 4 1 3 0]

#二维数组排序

list1 = [[4,3,2],[2,1,4]]

array=np.array(list1)

print array

array.sort(axis=1) #axis=1按行排序,axis=0按列排序

print array

输出结果:

[[4 3 2]

[2 1 4]]

[[2 3 4]

[1 2 4]]

补充拓展:python 对数组进行排序并保留索引

如下所示:

import numpy as np

arr = [1, 3, 5, 2, 4, 6]

arr = np.array(arr)

print (np.argsort(arr)) # 正序输出

print (np.argsort(-arr)) # 逆序输出

以上这篇python对数组进行排序,并输出排序后对应的索引值方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

时间: 2020-02-27

这篇文章主要介绍了Python获取二维数组的行列数的2种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import numpy as np x = np.array([[1,2,5],[2,3,5],[3,4,5],[2,3,6]]) # 输出数组的行和列数 print x.shape # (4, 3) # 只输出行数 print x.shape[0] # 4 # 只输出列数 print x.shape[1] # 3 或者 In [48]

reshape(shape) : 不改变数组元素,返回一个shape形状的数组,原数组不变.是对每行元素进行处理 resize(shape) : 与.reshape()功能一致,但修改原数组 In [1]: a = np.arange(20) #原数组不变 In [2]: a.reshape([4,5]) Out[2]: array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])

不同的数字之间使用 空格" ","$","*"等隔开,支持带小数点的字符串 NumArray=str2num(LineString,comment='#') 将字符串中的所有非Double类型的字符全部替换成空格 以'#'开头直至行尾的内容被清空 返回一维numpy.array数组 import numpy import scipy def str2num(LineString,comment='#'): from io import Strin

一.问题描述 1.求一个无序数组的中位数, (若数组是偶数,则中位数是指中间两个数字之和除以2,若数组是奇数,则中位数是指最中间位置.要求:不能使用排序,时间复杂度尽量低 2.例如: lists = [3, 2, 1, 4] , 中位数为 = (2+3)/2 = 2.5 lists = [3, 1, 2] , 中位数为 2 3.算法思想: 利用快速排序思想(但是并不是全部使用):任意挑选一个元素,以该元素为key, 划分数组为两个部分,如果左侧数组长度刚好为(n-1)/2, 那么key就为中位数

在python中,用于数组拼接的主要来自numpy包,当然pandas包也可以完成. 而,numpy中可以使用append和concatenate函数: 1. 建立数组 # pandas有专门的连接方法 import numpy as np # np.size(a, 0) 行数 # np.size(a, 1) 列数 a = np.array([[1, 2],[3, 4],[5, 6]]) b = np.array([[11, 22],[33, 44],[55, 66]]) print(np.si

我就废话不多说了,直接上代码吧! import datetime def find_close(arr, e): start_time = datetime.datetime.now() size = len(arr) idx = 0 val = abs(e - arr[idx]) for i in range(1, size): val1 = abs(e - arr[i]) if val1 < val: idx = i val = val1 use_time = datetime.dateti

关于多维数组如何复合排序 如数组: >>> import numpy as np >>> data = np.array([[2,2,5],[2,1,3],[1,2,3],[3,1,4]]) >>>> data array([[2, 2, 5], [2, 1, 3], [1, 2, 3], [3, 1, 4]]) 将数组先按照第一列升序,第二列升序,第三列升序的方式排序: >>> idex=np.lexsort([data[:,

本文实例讲述了Python实现二维数组按照某行或列排序的方法.分享给大家供大家参考,具体如下: lexsort支持对数组按指定行或列的顺序排序:是间接排序,lexsort不修改原数组,返回索引. (对应lexsort 一维数组的是argsort a.argsort()这么使用就可以:argsort也不修改原数组, 返回索引) 默认按最后一行元素有小到大排序, 返回最后一行元素排序后索引所在位置. 设数组a, 返回的索引ind,ind返回的是一维数组 对于一维数组, a[ind]就是排序后的数组.

0.目录 1.遇到的问题 2.创建二维数组的办法 •3.1 直接创建法 •3.2 列表生成式法 •3.3 使用模块numpy创建 1.遇到的问题 今天写Python代码的时候遇到了一个大坑,差点就耽误我交作业了... 问题是这样的,我需要创建一个二维数组,如下: m = n = 3 test = [[0] * m] * n print("test =", test) 输出结果如下: test = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 是不是看起来没有一点问

本文介绍下,php中使用array_multisort函数进行二维数组排序的例子,有需要的朋友,参考下吧.继上一篇文章:PHP二维数组排序自定义函数,今天,我们再介绍一个php二维数组排序的例子.php对二维数组的排序很简单,主要用到array_multisort函数.例子: 复制代码 代码如下: <?php /** * php二维数组排序 * edit www.jb51.net*/     $data = array();     $data[] = array('volume' => 67

本文实例讲述了PHP按指定键值对二维数组进行排序的方法.分享给大家供大家参考,具体如下: 问题: 有数组: 复制代码 代码如下: array(0=>array('id'=>1,'price'=>50),1=>array('id'=>2,'price'=>60)); 要求根据数组的price这个字段进行排序. 实现代码如下: <?php $array[] = array('id'=>1,'price'=>50); $array[] = array('id

本文实例讲述了php根据某字段对多维数组进行排序的方法.分享给大家供大家参考.具体分析如下: 根据某字段对多维数组进行排序,在看到array_multisort方法的作用时突然想到,可以用来做这个方法 这段代码可实现根据field字段对数组进行排序 function sortArrByField(&$array, $field, $desc = false){ $fieldArr = array(); foreach ($array as $k => $v) { $fieldArr[$k]

PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以行来排序--这类似于 SQL 的 ORDER BY 子句的功能.第一个数组是要排序的主要数组.数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推.--这句话是理解此函数用法的关键. 第一个参数必须是一个数组.接下来的每个参数可以是数组或者是下面列出的排序标志. 排序顺序

本文实例总结了php一维二维数组键排序方法.分享给大家供大家参考.具体方法如下: 在php中数组排序一直是一个老生常谈的问题,下面我们来集中讲一下关于在php中一维数组与二维数组排序的实现程序,相信对大家有一定的参考借鉴价值. 功能:对数组进行重新排序. 说明:冒泡排序 (一维数组)(二维数组某个健排序) 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止 设想被排序的数组R[1..N] 垂直竖立,将每个数据元素看作有重量的气泡,从下往上扫描数组,凡

之前提到去除一维数组中的重复元素用unique()函数,如果要去除二维数组中的重复行该怎么操作呢? import numpy as np arr = np.array([[1, 2],[3, 4],[5, 6],[7, 8],[3, 4],[1, 2]]) print(np.array(list(set([tuple(t) for t in arr])))) 输出: [[1 2] [3 4] [5 6] [7 8]] 如果是二维列表,列表中每个元素还是列表 list2=list(set([tup

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中有多种排序和搜索算法可供使用,下面分别进行介绍。 ### 数组排序 1. 内置函数`sorted()` `sorted()`函数可以对可迭代对象进行排序(默认升序),并返回一个新的排好序的列表。 ```python arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_arr = sorted(arr) print(sorted_arr) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] ``` 2. 内置函数`sort()` `sort()`函数可以对列表进行排序,会直接修改原始列表。 ```python arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] arr.sort() print(arr) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] ``` 3. 内置函数`heapq.nsmallest()`和`heapq.nlargest()` `heapq.nsmallest()`和`heapq.nlargest()`函数可以在不进行完整排序的情况下,找到列表中最小/最大的n个元素。 ```python import heapq arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] smallest_three = heapq.nsmallest(3, arr) print(smallest_three) # [1, 1, 2] largest_three = heapq.nlargest(3, arr) print(largest_three) # [9, 6, 5] ``` 4. 内置函数`sorted()`和`lambda`表达式 如果需要按照某个复杂的规则进行排序,则可以使用`sorted()`函数的`key`参数,并结合`lambda`表达式来完成。 ```python arr = ["banana", "apple", "pear", "orange"] sorted_arr = sorted(arr, key=lambda x: x[1]) # 按照第二个字符排序 print(sorted_arr) # ['apple', 'banana', 'orange', 'pear'] ``` ### 数组搜索 1. 内置函数`index()` `index()`函数可以在列表中查找指定元素的位置,如果不存在则会抛出`ValueError`异常。 ```python arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] index = arr.index(4) print(index) # 2 ``` 2. 内置函数`count()` `count()`函数可以统计列表中指定元素的个数。 ```python arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] count = arr.count(5) print(count) # 3 ``` 3. 使用循环进行查找 如果列表没有进行排序,则可以使用循环进行查找。 ```python arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] # 查找第一个5的位置 index = -1 for i in range(len(arr)): if arr[i] == 5: index = i break print(index) # 4 ``` 4. 使用二分查找进行查找 如果列表已经进行了排序,则可以使用二分查找进行查找。可以使用`bisect`模块中的函数来进行。 ```python import bisect arr = [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] # 查找第一个5的位置 index = bisect.bisect_left(arr, 5) print(index) # 6 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值