Как переставить мой массив Numpy по определенной последовательности? - PullRequest
1 голос
/ 24 мая 2019

Я бы хотел изменить следующий массив 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 Ответ

1 голос
/ 24 мая 2019

Использование 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...