第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

按列對(duì) 2d numpy 字符串/浮點(diǎn)數(shù)組進(jìn)行排序

按列對(duì) 2d numpy 字符串/浮點(diǎn)數(shù)組進(jìn)行排序

慕容3067478 2023-07-18 17:35:29
我有以下 numpy 數(shù)組(自 1957 年以來該國(guó)的火箭發(fā)射次數(shù)),我想按發(fā)射次數(shù)的升序?qū)ζ溥M(jìn)行排序。   ['Australia', 6.0],   ['Brazil', 3.0],   ['China', 269.0],   ['France', 303.0],   ['India', 76.0],   ['Iran', 14.0],   ['Israel', 11.0],   ['Japan', 126.0],   ['Kazakhstan', 701.0],   ['Kenya', 9.0],   ['New Zealand', 13.0],   ['North Korea', 5.0],   ['Pacific Ocean', 36.0],   ['Russian Federation', 1398.0],   ['South Korea', 3.0],   ['USA', 1351.0]問題是, np.sort(a, axis = 0) 只對(duì)值進(jìn)行排序,但國(guó)家之間沒有聯(lián)系,因此 ei 朝鮮發(fā)射了 269 枚火箭(可能比 5 枚更有可能)或者,如果我執(zhí)行 np.sort(a, axis = 1) 那么我會(huì)收到一條錯(cuò)誤消息類型錯(cuò)誤:“float”和“str”實(shí)例之間不支持“<”任何想法將不勝感激!
查看完整描述

2 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

import numpy as np


data = [

   ['Australia', 6.0], 

   ['Brazil', 3.0],

   ['China', 269.0],

   ['France', 303.0],

   ['India', 76.0],

   ['Iran', 14.0],

   ['Israel', 11.0],

   ['Japan', 126.0],

   ['Kazakhstan', 701.0],

   ['Kenya', 9.0],

   ['New Zealand', 13.0],

   ['North Korea', 5.0],

   ['Pacific Ocean', 36.0],

   ['Russian Federation', 1398.0],

   ['South Korea', 3.0],

   ['USA', 1351.0]

]

我們可以創(chuàng)建一個(gè)結(jié)構(gòu)化數(shù)組,然后按鍵對(duì)其進(jìn)行排序:


dtype = [

    ('name', '<U18'),    

    ('rockets', float)

]


data = np.array([tuple(x) for x in data], dtype=dtype) 

sorted_data = np.sort(data, order=['rockets'])          


print(sorted_data)


查看完整回答
反對(duì) 回復(fù) 2023-07-18
?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

使用 python 列表排序很容易:


In [208]: alist = [   ['Australia', 6.0],

     ...:    ['Brazil', 3.0],

     ...:    ['China', 269.0],

     ...:    ['France', 303.0],

     ...:    ['India', 76.0],

     ...:    ['Iran', 14.0],

     ...:    ['Israel', 11.0],

     ...:    ['Japan', 126.0],

     ...:    ['Kazakhstan', 701.0],

     ...:    ['Kenya', 9.0],

     ...:    ['New Zealand', 13.0],

     ...:    ['North Korea', 5.0],

     ...:    ['Pacific Ocean', 36.0],

     ...:    ['Russian Federation', 1398.0],

     ...:    ['South Korea', 3.0],

     ...:    ['USA', 1351.0]]

In [209]: newlist = sorted(alist, key=lambda x: x[1])

In [210]: newlist

Out[210]: 

[['Brazil', 3.0],

 ['South Korea', 3.0],

 ['North Korea', 5.0],

 ['Australia', 6.0],

 ['Kenya', 9.0],

 ['Israel', 11.0],

 ['New Zealand', 13.0],

 ['Iran', 14.0],

 ['Pacific Ocean', 36.0],

 ['India', 76.0],

 ['Japan', 126.0],

 ['China', 269.0],

 ['France', 303.0],

 ['Kazakhstan', 701.0],

 ['USA', 1351.0],

 ['Russian Federation', 1398.0]]

使用對(duì)象 dtype 數(shù)組(保留字符串和浮點(diǎn)列):


In [211]: arr = np.array(alist, object)

In [212]: arr

Out[212]: 

array([['Australia', 6.0],

       ['Brazil', 3.0],

       ['China', 269.0],

       ['France', 303.0],

       ...

       ['USA', 1351.0]], dtype=object)

只需查看第二列即可獲取排序索引:


In [213]: idx = np.argsort(arr[:,1])

In [214]: idx

Out[214]: array([ 1, 14, 11,  0,  9,  6, 10,  5, 12,  4,  7,  2,  3,  8, 15, 13])

In [215]: arr[idx]

Out[215]: 

array([['Brazil', 3.0],

       ['South Korea', 3.0],

       ['North Korea', 5.0],

       ['Australia', 6.0],

       ['Kenya', 9.0],

       ...

       ['Russian Federation', 1398.0]], dtype=object)

其他答案中的結(jié)構(gòu)化數(shù)組方法也很好。


查看完整回答
反對(duì) 回復(fù) 2023-07-18
  • 2 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)