按内部数组的长度对numpy数组的numpy数组进行排序

时间:2017-11-13 18:33:58

标签: python arrays sorting numpy

如果我有一个numpy数组,每个元素是另一个不同长度的numpy数组(因为这个而不是ndarray),我如何按内部数组的下降长度对外部数组进行排序?

例如:

a = np.array([np.array([1]), np.array([1, 2, 3]), np.array([1, 2])])

将按以下方式排序:

[[1, 2, 3], [1, 2], [1]]

2 个答案:

答案 0 :(得分:2)

替代方法可以是按照旧的Python方式对列表进行排序,然后重构数组。

np.array(sorted(b, key=len, reverse=True))

剩下的NumPy-land可能无论如何也不会为你提供任何好处。

答案 1 :(得分:1)

对于数组数组作为输出 -

create table a as
  select a.usubjid
       , a.avisitn
       , a.aval as abc
       , b.aval as cde
       , mean(a.aval,b.aval) as aval
  from (select * from b1 where paramcd='ABC') a
  left join (select * from b1 where paramcd='CDE') b
  on a.usubjid = b.usubjid
  and a.avisitn = b.avisitn
;

示例运行 -

a[np.argsort([len(i) for i in a])[::-1]]