Преобразовать размерный массив Numpy 2 в сопоставленный список словарей - PullRequest
4 голосов
/ 01 апреля 2020

У меня есть массив Numpy 2D и список заголовков. Каждая строка массива Numpy является записью, которая должна быть сопоставлена ​​со списком заголовков. В конце я хочу преобразовать каждую запись в словарь (и, таким образом, получить список словарей). Например:

A = [[1, 2, 3], [4, 5, 6]]
headers = ['a', 'b', 'c']

Вывод:

[{'a' : 1, 'b' : 2, 'c' : 3}, {'a' : 4, 'b' : 5, 'c' : 6}]

Какой самый быстрый способ добиться этого в Python? У меня порядка 10 ^ 4 строк и 10 заголовков, и его запуск занимает у меня примерно 0,3 секунды.

На данный момент у меня есть следующий код:

current_samples = A # The samples described above as input, a Numpy array
locations = []
for i, sample in enumerate(current_samples):
    current_location = dict()
    for index, dimension in enumerate(headers):
        current_location[dimension] = sample[index]
    locations.append(current_location)

Ответы [ 2 ]

4 голосов
/ 01 апреля 2020

Использование zip + dict :

result = [dict(zip(headers, l)) for l in A]
print(result)

Выход

[{'a': 1, 'b': 2, 'c': 3}, {'a': 4, 'b': 5, 'c': 6}]

С zip вы создайте пару элементов из списка и передайте ее в конструктор словаря.

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

Вы можете (несколько перебито) использовать для этой цели pandas:

result = pd.DataFrame(A, columns=headers).to_dict('row')

Вывод:

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