Как я могу использовать словарь для преобразования массива в Python?

1

В качестве примера игрушек можно сказать, что у меня есть:

import numpy as np

np.array([['dog','sheep','sheep','dog','cat'], 
          ['dog','dog','sheep','cat','cat']])
dict = {'dog':5,'cat':1,'sheep':3}

Я хочу найти эффективный способ построения желаемого массива, где я заменил элементы в соответствии со словарем.

(Настоящий словарь - это периодическая таблица, а реальный массив содержит тысячи элементов)

Теги:
numpy
python-3.x

2 ответа

5
Лучший ответ

Вы можете vectorize метод dict get.

>>> import numpy as np
>>> a = np.array([['dog','sheep','sheep','dog','cat'], 
...               ['dog','dog','sheep','cat','cat']])
>>> d = {'dog':5,'cat':1,'sheep':3}
>>> 
>>> np.vectorize(d.get)(a)
array([[5, 3, 3, 5, 1],
       [5, 5, 3, 1, 1]])

Я переименовал dict в d потому что вы не должны теневать встроенное имя dict с вашими собственными переменными.

1

Вы имеете в виду что-то вроде этого? Это заменяет значения перед созданием массива numpy:

import numpy as np
my_dict = {'dog': 5, 'cat': 1, 'sheep': 3}

np.array([
    [my_dict[e] for e in ['dog','sheep','sheep','dog','cat']],
    [my_dict[e] for e in ['dog','dog','sheep','cat','cat']],
])

Или вам нужно что-то более обобщенное?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню