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

时间:2019-05-24 07:03:09

标签: python 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数组而不是将其转换为列表的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

使用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]
相关问题