如何按特定顺序重新排列Numpy数组?

美智子

我想重新排列以下Numpy数组:

X = [ 1.  5.  2.  4.  2.  4.  1.  5.  2.  1.  2.  1.  5.  6.  2.  6.  5.  4.
  3.  1.  4.  6.  5.  3.  1.  5.  4.  5.  3.  3.  1.  4.  4.  5.  4.  4.
  3.  6.  1.  5.  4.  1.  4.  4.  1.  5.  1.  2.  1.  4.  6.  1.  3.  4.
  1.  6.  3.  1.  1.  5.  6.  4.  5.  2.  6.  3.  1.  3.  4.  6.  3.  2.
  1.  4.  2.  4.  2.  1.  2.  2.  1.  1.  6.  4.  3.  6.  1.  1.  4.  1.
  4.  4. nan nan nan nan]

按以下顺序3, 2, 6, 5, 4, 1

本质上,整个数组的排列方式是,所有3都先出现,2、6、5、4,最后是1。保留Numpy数组而不是将其转换为列表的最佳方法是什么?

克里斯

使用list.index

ind = [3, 2, 6, 5, 4, 1]
sorted(X, key=lambda x : ind.index(x) if x in ind else -1)

输出:

[nan,
 nan,
 nan,
 nan,
 3,
 ...
 1,
 1,
 1]

如果您想nan最后来:

last = len(ind)
sorted(X, key=lambda x : ind.index(x) if x in ind else last)

输出:

[3,
 3,
 ...
 1,
 1,
 nan,
 nan,
 nan,
 nan]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章