Получить словарные ключи от NumPy Массив и значения от приращения - PullRequest
2 голосов
/ 17 февраля 2020

У меня есть большой массив NumPy (с 100 000 000 элементов), который имеет уникальные и отсортированные значения. Массив может быть сгенерирован неэффективно с чем-то вроде этого (он съест вашу память, так как массив большой, но мой массив получен эффективно из другого источника).

import numpy as np

x = np.random.choice(9509413522, size=100_000_000, replace=False)  # this will take a ton of memory!
x = np.sort(x)

С этим массивом я хочу создайте словарь Python, где ключи - это уникальные элементы массива, а значения - соответствующие индексы массива. Как правило, я мог бы сделать:

some_dict = {v: i for i, v in enumerate(x)}

Но это занимает слишком много времени для большого массива (размер 100 000 000 элементов!), И я надеялся, что есть более быстрый способ сделать это sh.

В конечном итоге, у меня есть массив y (с избыточными элементами), который мне нужно быстро преобразовать в соответствующее ему значение из some_dict, выполнив:

np.array([some_dict[k] for k in y])

# or, alternatively

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