日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

numpy.argsort详解

發(fā)布時(shí)間:2025/4/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 numpy.argsort详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

numpy.argsort

  • 用例:
    numpy.argsort(a, axis=-1, kind=None, order=None)

  • 功能:
    返回?cái)?shù)組排序后的元素索引值。
    根據(jù)kind指定的算法對數(shù)組沿著axis軸進(jìn)行排序。其返回值的形狀和a一致,返回值內(nèi)容為排序后元素在原始數(shù)組中的索引。

  • 參數(shù)

變量名數(shù)據(jù)類型功能
a數(shù)組型變量被排序的數(shù)組。
axis整型或None,可選參數(shù)指定沿著哪個(gè)軸排序。默認(rèn)值是-1即最后一維。若為None,則會將數(shù)組拉伸為一維。
kind{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, 可選參數(shù)排序算法,默認(rèn)為’quicksort’。注意:'stable’和’mergesort’的后端都是使用timsort算法,并且在通常情況下,
算法的計(jì)算結(jié)果會隨數(shù)值類型的不同而發(fā)生改變。保留’mergesort’參數(shù)是為了向后兼容。
order字符串、字符串組成的列表,可選參數(shù)當(dāng)數(shù)組a定義了字段時(shí),此參數(shù)指定先比較哪個(gè)字段再比較哪個(gè)字段。通過字符串可以單一指定某個(gè)字段,
并且并不是所有字段均需被指定,未被指定的字段也會參與排序(按照他們在dtype中的出現(xiàn)順序進(jìn)行排序)。
  • 返回值
變量名數(shù)據(jù)類型功能
index_arrayn維數(shù)組或整數(shù)將a沿著指定軸排序后其索引組成的數(shù)組。若a為一維數(shù)組,a[index_array]生成排序后的a數(shù)組。
更一般的,無論a為多少維數(shù)組,我們均可使用np.take_along_axis(a, index_array, axis=axis)生成排序后的a數(shù)組
  • 備注
    有關(guān)不同排序算法的說明,請參閱sort。
    NumPy 1.4.0及以后的版本中,argsort可以對包含實(shí)數(shù)、復(fù)數(shù)、空值的數(shù)組進(jìn)行排序。在sort中詳細(xì)闡述了增強(qiáng)的排序算法。

  • 示例:

import numpy as np # 一維數(shù)組 x = np.array([3, 1, 2]) print('一維數(shù)組的排序結(jié)果:{}'.format(np.argsort(x))) # 二維數(shù)組 x = np.array([[0, 3], [2, 2]]) print('被排序的數(shù)組為:\n{}'.format(x)) # 沿著列方向進(jìn)行排序 ind = np.argsort(x, axis=0) print('列方向的排序索引為:\n{}'.format(ind)) print('列方向的排序結(jié)果為:\n{}'.format(np.take_along_axis(x, ind, axis=0))) # 沿著行方向進(jìn)行排序 ind = np.argsort(x, axis=1) print('行方向的排序索引為:\n{}'.format(ind)) print('行方向的排序結(jié)果為:\n{}'.format(np.take_along_axis(x, ind, axis=1))) # n維數(shù)組元素排序后的索引 ind = np.unravel_index(np.argsort(x, axis=None), x.shape) print('多維數(shù)組拉伸為一維后排序的索引為:{}'.format(ind)) print('將多維數(shù)組拉伸為一維后進(jìn)行排序:{}'.format(x[ind])) # 根據(jù)指定的鍵進(jìn)行排序 x = np.array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')]) print('原始數(shù)組為:') x # 沿著指定順序進(jìn)行排序 print('先對比x字段,再對比y字段:{}'.format(np.argsort(x, order=('x','y')))) print('先對比y字段,再對比x字段:{}'.format(np.argsort(x, order=('y','x'))))

一維數(shù)組的排序結(jié)果:[1 2 0]
被排序的數(shù)組為:
[[0 3]
[2 2]]
列方向的排序索引為:
[[0 1]
[1 0]]
列方向的排序結(jié)果為:
[[0 2]
[2 3]]
行方向的排序索引為:
[[0 1]
[0 1]]
行方向的排序結(jié)果為:
[[0 3]
[2 2]]
多維數(shù)組拉伸為一維后排序的索引為:(array([0, 1, 1, 0], dtype=int64), array([0, 0, 1, 1], dtype=int64))
將多維數(shù)組拉伸為一維后進(jìn)行排序:[0 2 2 3]
原始數(shù)組為:
array([(1, 0), (0, 1)], dtype=[(‘x’, ‘<i4’), (‘y’, ‘<i4’)])
先對比x字段,再對比y字段:[1 0]
先對比y字段,再對比x字段:[0 1]


github鏈接
https://github.com/wzy6642/numpy-translate

總結(jié)

以上是生活随笔為你收集整理的numpy.argsort详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。