Преобразование значений в массиве в их пары с использованием словаря в Python - PullRequest
0 голосов
/ 07 апреля 2020

Итак, у меня есть python словарь с около 40 записями, где ключи и значения являются числами. У меня есть массив numpy, который представляет собой очень длинный список чисел, где каждое число является одним из ключей в словаре.

Я хочу иметь возможность создать новый массив, за исключением того, что каждое число заменяется соответствующим значением с использованием словаря, но я застрял на том, что лучше. Я понимаю, что простой l oop справится с задачей, но мне действительно было интересно, есть ли более быстрый способ сделать это или есть какие-нибудь функции, которые могут помочь?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 07 апреля 2020

Вы можете использовать np.vectorize, чтобы применить пользовательскую функцию отображения, где каждая клавиша в arr будет заменена соответствующим значением в dictionary.

* 1008. * Вы можете использовать это:

import numpy as np

d = {1:10, 2:20, 3:30, 4:50}
arr = np.array([1, 2, 3, 4])

result = np.vectorize(lambda k: d[k])(arr)

Выход:

>>> print(result)
[10 20 30 50]
0 голосов
/ 07 апреля 2020
array = [1, 2, 3]
dictionary = {1: 10, 2: 20, 3:40}
list(map(lambda key: dictionary[key], array))

или

[*map(lambda key: dictionary[key], array)]
0 голосов
/ 07 апреля 2020

Вы можете использовать понимание списка для l oop по первому массиву, а затем найти соответствующее значение в своем словаре.

>>> data = [1, 5, 8]
>>> mapping = {1: 6, 5:0, 8: 3}
>>> [mapping[i] for i in data]
[6, 0, 3]
...