Как я могу использовать словарь для преобразования массива в Python? - PullRequest
0 голосов
/ 16 октября 2018

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

import numpy as np

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

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

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

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Вы можете vectorize метод диктанта 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 своими собственными переменными.

0 голосов
/ 16 октября 2018

Ты имеешь в виду что-то подобное?Это заменяет значения перед созданием массива 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']],
])

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

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