Измените элементы в 2d ndarray на массивы - PullRequest
3 голосов
/ 13 ноября 2011

В Numpy у меня есть 2d массив, как:

[
 [1 2 3 4 5]
 [2 3 1 4 5]
 .....
 [3 5 2 3 5]
]

Я хочу заменить каждый элемент в этом массиве в массив 1d, например,

1 -> [0 0 0 0 1]
2 -> [0 0 0 1 0]

и т.д.

Это преобразует элементы в массивы, а весь двумерный массив в трехмерный массив. Я пробовал несколько вещей, но ничего не получалось. Какой должен быть правильный способ сделать это? Спасибо.

1 Ответ

4 голосов
/ 13 ноября 2011

Предположим, это ваш двумерный массив:

x=np.random.randint(1,3,size=(3,2))
print(x)

# [[2 2]
#  [1 2]
#  [2 1]]

Создайте массив:

y=np.array([[0,0,0,0,0],[0,0,0,0,1],[0,0,0,1,0]])

Этот массив можно рассматривать как отображение:

0 --> [0,0,0,0,0]   # y[0] is mapped to [0,0,0,0,0]
1 --> [0,0,0,0,1]   # y[1]      ...     [0,0,0,0,1]
2 --> [0,0,0,1,0]   # y[2]      ...     [0,0,0,1,0]

Тогда массив, который вам нужен, задается как y[x]

print(y[x])

# [[[0 0 0 1 0]
#   [0 0 0 1 0]]

#  [[0 0 0 0 1]
#   [0 0 0 1 0]]

#  [[0 0 0 1 0]
#   [0 0 0 0 1]]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...