Рубрики
Без рубрики

Как создать словарь из двух байных массивов?

Любой, кто работает со списками данных, сталкивается с необходимостью комбинировать их полезным способом. Часто лучший результат представляет собой словарь, состоящий из ключей и значений. В этой статье вы узнаете, как создать словарь из двух замедленных массивов. Формулировка задачи: Учитывая два примесения OUMPY A и B. Создайте словарь … Как создать словарь из двух примеров Numpy? Читать далее “

Автор оригинала: James Brown.

Кто-нибудь работает с Списки данных встретится о необходимости комбинировать их полезным способом. Часто лучший результат – Словарь состоящий из Ключи и Значения Отказ В этой статье вы узнаете, как создать словарь из двух замедленных массивов.

Проблема разработки: Учитывая два объявленных массива А и B Отказ Создать словарь, который присваивает ключ [I] ценить B [I] Для всех Я Отказ

Пример : Учитывая два объявленных массива

a = np.array([1, 42, 0])
b = np.array(['Alice', 'Bob', 'Liz'])

Создайте новый словарь программно, который назначает элементы в А к элементам в B , элемент-мудрый:

{1: 'Alice',
 42: 'Bob',
 0: 'Liz'}

После предоставления вам какого-то фона для входного массива Numpy вы узнаете несколько методов для достижения этого.

Фон: Numpy для массива

Numpy это библиотека Python, которая полезна для работы с массивами. Numpy обозначает «Численный питон» Отказ Пользователи Python могут использовать стандартные списки в качестве массивов, но Numpy работает быстрее, потому что элементы массива хранятся в смежной памяти. Это делает его более эффективным для того, чтобы, например, итерацию через массив, а не на необходимости, чтобы схватить в пространство памяти, чтобы найти следующий элемент.

Если у нас есть Python и PiP, уже установленные в наших системах, то установка Numpy легко:

Создание Numpy Array так же просто, как импортировать Numpy Library и вызов Массив () функция. Numpy часто импортируется под NP псевдоним:

import numpy as np	
planet = np.array(['Mercury', 'Venus', 'Earth', 'Mars'])
orbitalPeriod = np.array([88.0, 224.7, 365.2, 687.0])

В отличие от стандартных списков Python, которые могут удерживать разные типы данных в одном списке, массивы Numpy должны быть однородными, все тот же тип данных. В противном случае мы теряем математическую эффективность, встроенную в Numpy Array.

Метод 1: на молнии

Создав две массивы, мы можем использовать Python’s zip () Функция слить их в словарь. zip () Модуль находится в встроенном пространстве имен Python. Если мы используем dir () Для просмотра __Builtins__ Мы находим zip () В конце списка:

>>>dir(__builtins__)
['ArithmeticError', 'AssertionError'...,'vars', 'zip']

zip () Функция делает итератор, который объединяет элементы из каждой из передовых массивов, как и блокирующие зубы молнии на паре джинсов. На самом деле, zip () Функция была названа для физической на молнии.

d = {}
for A, B in zip(planet, orbitalPeriod):
    d[A] = B

print(d)
# {'Mercury': 88.0, 'Venus': 224.7, 'Earth': 365.2, 'Mars': 687.0}

При использовании zip () Функция, нам гарантировано, что элементы останутся в данном порядке влево-правильном порядке. Не нужно беспокоиться о том, что элементы в массивах будут смешаны, поскольку они объединяются в словарь. В противном случае словарь будет бесполезным, так как ключи не будут правильно выровнены со своими значениями.

Способ 2: массивы неравных длин

В некоторых случаях наши массивы могут иметь неравные длины, что означает, что один массив имеет больше элементов, чем другой. Если это так, то используйте zip () Функция объединить их приведет к словарю, соответствующее Самый короткий Длина массива. Вот пример самых ярких звезд в кластере Pleiades с их очевидными величинами:

stars = np.array(['Alcyone', 'Atlas', 'Electra',
                  'Maia', 'Merope', 'Taygeta', 'Pleione'])
magnitude = np.array([2.86, 3.62, 3.70, 3.86, 4.17, 4.29])
	
cluster = {}

for A, B in zip(stars, magnitude):
    cluster[A] = B
	
print(cluster)
# {'Alcyone': 2.86, 'Atlas': 3.62, 'Electra': 3.7, 'Maia': 3.86, 'Merope': 4.17, 'Taygeta': 4.29}

Как мы видим, « звезды «Массив содержит семь сестер, семь самых ярких звезд в кластере Pleiades. « величина «Массив, однако, перечислил только вершину шесть значения для очевидной величины. Когда zip () Функция объединила две массивы, седьмая звезда была полностью удалена.

В зависимости от наших потребностей это может быть приемлемо. Но если нет, то мы можем использовать zip_longest () Функция из Itertools модуль вместо zip () функция. С помощью этой функции любые недостающие значения будут заменены на FillValue аргумент Мы можем вставить любое значение, которое мы хотим, и значение по умолчанию будет Нет Отказ

Давайте создадим кластер Словарь снова:

from itertools import zip_longest

cluster = {}

for A, B in zip_longest(stars, magnitude, fillvalue='?'):
    cluster[A] = B

print(cluster)
# {'Alcyone': 2.86, 'Atlas': 3.62, 'Electra': 3.7, 'Maia': 3.86, 'Merope': 4.17, 'Taygeta': 4.29, 'Pleione': '?'}

На этот раз все семь сестров перечислены, и последнее значение неизвестного величины помечено вопросительным знаком, возможно, быть заполненным позже.

Комбинируя память Mempy-Efficial Memory с zip () или zip_longest () Функции простоты использования в качестве итератора, мы можем быстро и просто создавать словари из двух массивов с минимумом суеты.

Рекомендации