簡體   English   中英

如何對包含 numpy 數組的元組列表進行排序?

[英]How to sort a list of tuples that contain numpy array?

首先,這是不起作用的代碼:

ls = [(1.0,np.array([3.0, 4.0])), (1.0,np.array([3.0, 4.1])), (3.0,np.array([2.0, 1.0]))]
ls.sort()

如您所見,我有一個元組列表 ( ls )。 每個元組的第一個元素是一個浮點數。 我嘗試通過ls.sort()對列表進行排序。 在大多數情況下,它運行良好。 但是,有時(如上例所示)我的元組的第一個元素的值相同。 在這種情況下,python 嘗試使用元組的第二個元素來整理元組,但它不起作用,因為在元組中的第二個位置我有 numpy 數組。

如何通過忽略元組的第二個元素來對我的列表進行排序? 如果第一個元素相同,我不關心排序(可以是原始排序,也可以是隨機排序)。

要么告訴 python 只對第一項進行排序

sorted(ls, key=lambda t: t[0])

或將整個事物轉換為結構化的 numpy 數組並要求 numpy 對其進行排序

ls_arr = np.array(ls, dtype=[('my_val', float), ('my_arr', float, 2)])
ls_arr.sort()

第二個選項僅在數組長度始終相同時才有效。

可能使用 key 參數。 這是你想要的嗎?

import numpy as np
ls = [(1.0,np.array([3.0, 4.0])), (1.0,np.array([3.0, 4.1])), (3.0,np.array([2.0, 1.0]))]
ls.sort(key=lambda x: x[0])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM