В качестве примера игрушек можно сказать, что у меня есть:
import numpy as np
np.array([['dog','sheep','sheep','dog','cat'],
['dog','dog','sheep','cat','cat']])
dict = {'dog':5,'cat':1,'sheep':3}
Я хочу найти эффективный способ построения желаемого массива, где я заменил элементы в соответствии со словарем.
(Настоящий словарь - это периодическая таблица, а реальный массив содержит тысячи элементов)
Вы можете 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
с вашими собственными переменными.
Вы имеете в виду что-то вроде этого? Это заменяет значения перед созданием массива 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']],
])
Или вам нужно что-то более обобщенное?