如果我有一个numpy数组,每个元素是另一个不同长度的numpy数组(因为这个而不是ndarray),我如何按内部数组的下降长度对外部数组进行排序?
例如:
a = np.array([np.array([1]), np.array([1, 2, 3]), np.array([1, 2])])
将按以下方式排序:
[[1, 2, 3], [1, 2], [1]]
答案 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]]