Я пытаюсь создать вектор состояния, представляющий положения и скорости ряда частиц в заданное время, для моделирования. Я создал отдельные векторы x, y, vx, vy, которые дают значение этой переменной для каждой частицы. Есть ли хороший способ автоматического комбинирования их в один массив, который содержит всю информацию для частицы, за которой следует вся информация для частицы два и т. Д. И т. Д.)? СпасибоСоздайте массив python из первого элемента массива 1, первого элемента массива 2, второго элемента массива 1, второго элемента массива 2 и т. Д.
0
A
ответ
1
Вы имеете в виду это?
x = [0, 1, 2]
y = [3, 4, 5]
vx = [6, 7, 8]
vy = [9, 10, 11]
c = zip(x, y, vx, vy)
print(c) # -> [(0, 3, 6, 9), (1, 4, 7, 10), (2, 5, 8, 11)]
, если вы используете Python 3, вам нужно будет использовать c = list(zip(x, y, vx, vy))
.
Если вы не хотите, чтобы значения для каждой частицы группируются в кортеж, как, что по какой-то причине, то результат может быть уплощен:
c = [item for group in zip(x, y, vx, vy) for item in group]
print(c) # -> [0, 3, 6, 9, 1, 4, 7, 10, 2, 5, 8, 11]
Однако, я бы рекомендовал просто «называть» кортежи вместо:
from collections import namedtuple
Particle = namedtuple('Particle', 'x, y, vx, vy')
c = [Particle._make(group) for group in zip(x, y, vx, vy)]
print(c)
Выход:
[Particle(x=0, y=3, vx=6, vy=9),
Particle(x=1, y=4, vx=7, vy=10),
Particle(x=2, y=5, vx=8, vy=11)]
Таким образом, вы можете ссылаться на поля по имени - то есть c[1].x
- что может сделать последующий код и вычисления намного более удобочитаемыми.
Смежные вопросы
- 1. Извлечение элемента из второго элемента массива транспортира
- 2. Удаление первого элемента массива
- 3. Удаление первого элемента из массива
- 4. Печать только второго элемента массива
- 5. Обнаружение первого элемента массива, содержащего "-"
- 6. Проверка первого символа элемента массива
- 7. Неразрушающий удаление первого элемента массива?
- 8. Игнорирование первого элемента массива строк
- 9. AngularJS отображения первого элемента массива
- 10. Получение первого элемента из массива запросов
- 11. Получение первого элемента пустого массива
- 12. Создать массив первого элемента каждого массива
- 13. Индексирование второго элемента в конец массива?
- 14. AngularJS Свойство фильтра из первого элемента массива
- 15. Добавление элемента в индекс первого пустого массива
- 16. Сортировка файла на основе элемента первого массива
- 17. Объединить значения массива на основе первого элемента массива, используя рубин
- 18. Доступ первого элемента массива строк в C
- 19. Изменение имени элемента XML-массива элемента массива
- 20. Как умножить 2 элемента массива
- 21. Как объединить два изменяемых массив, как один из элементов первого массива и первого элемента второго массива в Objective C
- 22. undefined для элемента первого массива в javascript
- 23. Поиск другого элемента массива 2
- 24. Случайная перетасовка массива 2 элемента на 2
- 25. Как получить конкретное значение из первого массива и второго массива
- 26. Как вставить элемент после элемента второго массива
- 27. Найти sibling текущего элемента массива
- 28. PHP: установить в качестве первого элемента массива элемента, который нужно
- 29. jQuery: функция массива останавливается после первого элемента
- 30. запрос элемента массива массива mongodb
Да, это то, к чему я стремился. Огромное спасибо. Будет ли тот факт, что новый список сгруппирован (как указывают скобки), влияет на любые будущие расчеты, выполненные на нем? –
Это создает список кортежей, поэтому информация для первой частицы находится в 'c [0]' где 'c [0] [0]' - значение 'x' первой частицы,' c [0] [ 1] 'является его' y'value и т. Д. Информация для второй частицы находится в 'c [1]'. Это не повлияет на будущие вычисления при условии правильного доступа к значениям. Если это слишком громоздко, его можно было бы улучшить, чтобы создать разные под-объекты. Отвечает ли мой ответ на вашу проблему? (Пожалуйста, см. [_Что делать, если кто-то отвечает на мой вопрос?] (Http://stackoverflow.com/help/someone-answers)) – martineau
Думаю, что да. Есть ли способ сделать то же самое, не будучи списком кортежей? то есть только отдельные числа в массиве –