Объединение двух одномерных массивов разных типов данных в один двумерный массив в PYTHON
У меня есть 2 списка номеров: а и б. A — это список номеров узлов с типом integer, а b — это список координат X с типом float64. Я хочу объединить эти 2 массива равной длины (N) в массив Nx2, который сохраняет типы данных. Я использую этот массив позже в некоторых логических тестах, поэтому мне нужно, чтобы первый столбец был целым числом. Я использовал:
Но, очевидно, это превращает все в числа с плавающей точкой.
4 ответа
Один из способов достижения вашей цели — использовать numpy dtype , как описано в http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
Функция zip — самый простой способ. Краткий пример:
Если вы хотите получить a из zip(a,b) , просто напишите:
Хорошая идея — сделать словарь из двух списков:
Но будьте осторожны, порядок в словаре не сохраняется. Доступ к данным из словаря очень прост:
Я предполагаю, потому что вы упомянули 2D-список в заголовке, что вам нужен список, подобный приведенному ниже, где каждый узел и координата имеют свой тип:
Вы можете сделать это в три быстрых строки без каких-либо модулей, сохраняя тип каждой переменной:
Таким образом, у вас будет 2D список. Каждый элемент в 2D-списке сам по себе будет другим списком, содержащим пару узла и координату. Поскольку Python нечувствителен к типу, тип вашего узла и вашей координаты будет сохранен. Вы получите доступ к каждой паре с:
И их содержимое с:
Надеюсь, это поможет. 🙂
Вы можете использовать zip () здесь. Если вы просто сравните элемент списка a, то в чем здесь проблема?
Двумерный массив в Python
Array — это в основном структура данных, в которой данные хранятся линейно. В Python нет эксклюзивного объекта массива, потому что пользователь может выполнять все операции с массивом, используя список.
Итак, Python выполняет все операции, связанные с массивами, с помощью объекта списка. Массив в Python представляет собой упорядоченный набор элементов в последовательном порядке.
Синтаксис объявления массива:
Двумерные массивы — это в основном массивы внутри массивов. Здесь позиция элемента данных доступна с помощью двух индексов. Он представлен в виде таблицы rows and columns элементов данных.
Объявление двумерного массива
array-name = [ [d1, d2, . dn], [e1, e2, . en] ]

Вход в двумерный массив предоставляется в виде строк и столбцов.

Insert
Элементы в 2D-массив могут быть вставлены с помощью функции insert() указывающей индекс и позицию вставляемого элемента.

Как обновить элементы в двумерном массиве?
Элементы могут быть обновлены, а значения могут быть изменены путем переназначения значений с использованием индекса массива.

Как удалить значения?
Элементы из двумерного массива можно удалить с помощью метода del() .

Размер или длина
Длину массива можно определить с помощью метода len() .
Добавление
Элементы могут быть добавлены к массиву с помощью метода append() . Элемент добавляется в конец массива.

Нарезка
Нарезка массива используется для доступа к нескольким значениям в массиве.
Как создать из двух или более массивов-списков один многомерный массив
На вход я получаю несколько массивов(всегда одномерных).
После должен получить:
Решение должно быть универсальным, на вход буду получать от одного до 5 массивов.
Не скажу, что это на 100% универсальное решение, но можно и так:
![]()
Самое простое и короткое решение:
Большое преимущество: почти при любом количестве массивов можно уложиться в одну строку, просто перечислив имена массивов через запятую. А у ответа, который сказал @ganz, придётся делать столько строк с append -ами.
![]()
Создаём пустой список и добавляем в него списки как элементы
Второй вариант, как видно много проще, то есть в ручную создаётся итоговый список. Из недостатков- нужно в ручную писать все имена переменных, из достоинств имена переменных могут быть безсистемны
Данный пример добавляет в итоговый список до 26 переменных, имена которых есть латинские буквы в нижнем регистре. Имеет следующие недостатки: пропускать переменные в данном виде нельзя так как будет исключение.