我想重新排列以下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数组而不是将其转换为列表的最佳方法是什么?
答案 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]