Как эффективно отобразить целые числа в URI в многопараметрическом массиве? - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть массив, который выглядит примерно так:

myarray = array([list(['string4', 'string2', 'string3']),list(['string1', 'string2', 'string4', 'string5']), list(['string1', 'string2', 'string4'])], dtype=object)

Как мне кодировать отдельные строки в целые числа?У меня большой набор данных.Как бы я сделал это наиболее эффективно?Я хочу что-то похожее на это:

myarrayencoded = [[4,2,3],[1,2,4,5],[1,2,4]]

Примечание: я не могу ничего сортировать, так как позиция целых чисел имеет значение.Кроме того, каждый подсписок может содержать различное количество строк.

Я очень ценю помощь!

1 Ответ

0 голосов
/ 13 декабря 2018

Вы можете использовать Панд через pd.factorize, который использует внутреннее хеширование.

import pandas as pd
import numpy as np

myarray = np.array([list(['string4', 'string2', 'string3']),
                    list(['string1', 'string2', 'string4', 'string5']),
                    list(['string1', 'string2', 'string4'])], dtype=object)

flattened = np.concatenate(myarray)  # flatten array of lists
idx_split = np.array(list(map(len, myarray))).cumsum()[:-1]  # calculate split indices
factored = pd.factorize(flattened, sort=True)[0] + 1  # factorize, sort, start from 1

res = [i.tolist() for i in np.array_split(factored, idx_split)]  # return list of lists

print(res)

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