Разбить массив на несколько массивов по условию [закрыт]
Учебные задания допустимы в качестве вопросов только при условии, что вы пытались решить их самостоятельно перед тем, как задать вопрос. Пожалуйста, отредактируйте вопрос и укажите, что именно вызвало у вас трудности при решении задачи. Например, приведите код, который вы написали, пытаясь решить задачу
Закрыт 10 месяцев назад .
Помогите, пожалуйста разбить массив на несколько по условию. Имеется примерно такой массив (из внешнего файла):
TIMESTEP: 1 ITEM: ATOMS x y z 1 2 3 1 2 3 2 2 3 TIMESTEP: 2 ITEM: ATOMS x y z 2 3 4 4 4 4 5 5 5 7 7 7 TIMESTEP: 3 ITEM: ATOMS x y z 2 3 4 4 4 4 5 5 5 3 2 1 1 1 1 1 1 1 6 6 6
Пользователь вводит значение TIMESTEP в консоли, и выводится массив значений, соответствующий данному шагу. Количество элементов в пределах одного такого подмассива — разное. Я думала, что нужно как-то работать с повторяющимися строками ITEM: ATOMS x y z, но не могу сообразить как.
Отслеживать
Ксюша Иваничкина
задан 1 фев в 12:28
Ксюша Иваничкина Ксюша Иваничкина
3 2 2 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
def split_array(file_content, step): step_data = [] lines = file_content.split("\n") reading_data = False for line in lines: if "TIMESTEP: " + str(step) in line: reading_data = True elif "TIMESTEP: " in line: reading_data = False elif reading_data: step_data.append(line) return step_data file_content = "TIMESTEP: 1\nITEM: ATOMS x y z\n1 2 3\n1 2 3\n2 2 3\nTIMESTEP: 2\nITEM: ATOMS x y z\n2 3 4\n4 4 4 \n5 5 5\n7 7 7\nTIMESTEP: 3\nITEM: ATOMS x y z\n2 3 4\n4 4 4 \n5 5 5\n3 2 1 \n1 1 1\n1 1 1 \n6 6 6" step = int(input("Введите номер: ")) step_data = split_array(file_content, step) print("Данные для шага", step, ":") print("\n".join(step_data))
Отслеживать
ответ дан 1 фев в 13:04
1,078 10 10 серебряных знаков 27 27 бронзовых знаков
-
Важное на Мете
Похожие
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Разбить массив на части, используя функции NumPy
Используя функции NumPy необходимо разбить данный массив на два массива, содержащие четные и нечетные значения, а затем собрать его в исходное состояние используя choose().
Как это сделать? Пытался смекнуть, все не доходит. Хотелось бы увидеть наглядный пример.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Разбить массив строк на части используя stream
Есть стрим строк, который я получаю после чтения файла: Stream<String> lines =.
Разбить массив на 4 части по диагонали и посчитать сумму в каждой части
Двумерный массив. Разбить массив на 4 части по диагонали и посчитать сумму в каждой части. Помогите.
Разбить массив на три части и в каждой части поменять местами наибольший элемент с наименьшим.
Дан массив X(N) (причем количество элементов массива кратно трем). Разбить массив на три части и в.
Как, используя numpy, создать массив с массивами
Мне нужно, используя numpy, записывать массивы в массив, не важно с какими значениями, так как они.
Разбить строку на части, используя в качестве разделителя задающееся с клавиатуры слово
Разбить строку на части, используя в качестве разделителя задающееся с клавиатуры слово. Например.
![]()
7279 / 4102 / 1794
Регистрация: 27.03.2020
Сообщений: 6,926

Сообщение было отмечено Foxy_Kami как решение
Решение
Foxy_Kami, Это?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
import numpy as np M = np.array([ [1, 2, 3, 4, 5], [2, 4, 6, 8, 10], [3, 6, 9, 12, 15], [4, 8, 12, 16, 20], [5, 10, 15, 20, 25] ]) val, idx = np.unique(M, return_inverse=True) idx = idx.reshape(M.shape) even = M[M%2==0] odd = M[M%2!=0] print(even) print(odd) res = np.choose(idx, val) print(res)
Регистрация: 03.03.2019
Сообщений: 89
Да, спасибо большое!
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Создать массив со 10х элементами, вывести нечетные, не используя numpy
1. Создать массив со 10х элементами, вывести нечетные, не используя numpy

Разбить массив на 2 части
Помогите пожалуйста написать программу. 2. Задан одномерный массив А(n). Разбить его на две.

Разбить массив на 2 части
Добрый день! Есть массив, который необходимо разбить на части для того, чтобы между ними вывести.

Поменять местами максимальный и минимальный элемент массив используя библиотеку numpy
Поменять местами максимальный и минимальный элемент массив используя библиотеку numpy. Спасите.

Ввести массив из n чисел, разбить массив на две примерно равные части и вывести числа в отдельном окне
Ввести массив из n чисел, разбить массив на две примерно равные части и вывести числа из каждой.
Разделить массив на несколько подмассивов
я попал на интересную задачу которую и пытаюсь решить, она должна разрезать 1 массив на несколько подмассивов по интересному принципу, я почти доделал ее, но для окончательного решения нужно создать код который автоматически будет вносить числа в вложенный массив, а все коды на которые я натыкаюсь не подходят для этой задачи (т.к. в большинстве они завязаны на том что в заранее известна точная длина массивов). ниже я приведу весь код с объяснением шагов (п.с. надеюсь никого не запутал))
1 2 3 4 5 6 7 8 9 10
def Cut(tubl,a):# tubl это вносимый массив c = 1 cut = [] for i in range(3,a+1,2): # этот цикл должен определять сколько всего будет вложенных массивов и передает данные которые помогут определить b b=i*i # определяет на какой цифре закончится определенный вложенный массив, соответственно c наоборот for j in range(c+1,b+1): # здесь и должен находиться код который будет вкладывать J в вложенный массив массива cut c = b print(cut) Cut([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],5)
на выходе должно получиться что-то на вроде этого:
cut = [[2,3,4,5,6,7,8,9],[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]]
я знаю что возможно объяснил не все или объяснил, но непонятно, поэтому задавайте вопросы если что.
в заранее спасибо!
Как разбить массив на подмассивы с одинаковой суммой числ?
У меня есть масив с числами от 1 до 8, например. [1,2,3,4,5,6,7,8]
И его надо разбить на несколько частей, в даном примере 2, чтобы получилось так, что и в одном и в другом сумма одинаковая. Например:
[1,4,6,7]
[2,3,8,5]
Как такое сделать?
есть пока такое, где s-сумма которая должна быть, n — это число, а k — на сколько разделить
n, k = map(int,input().split()) m1=[] m2=[] s=((n+1)/2*n)/k for i in range(1, n+1): print(i) print(s)
- Вопрос задан 13 дек. 2022
- 169 просмотров
6 комментариев
Простой 6 комментариев

Алан Гибизов @phaggi Куратор тега Python
А как пробовали и что не получилось?

Модератор @TosterModerator
За готовыми рецептами надо обращаться на фриланс. Сюда надо приносить свою попытку решения, показать что ожидалось и что получилось. Тогда, возможно, помогут.
В данном виде это не вопрос, а задание, и может быть удален за нарушение п.5.12 Регламента.
merifry @merifry Автор вопроса
Алан Гибизов, уже отредактировал, это все что есть, а как именно разделить не знаю
У задачи мало ограничений. Например, какой максимальный размер пула? Есть ли там повторения? Должны ли быть использованы все числа из пула? Должны ли «части» быть равными по количеству элементов? Нужно ли учитывать (иными словами, может ли быть), что отдельный элемент пула может быть больше суммы?
merifry @merifry Автор вопроса
Roman Kitaev, максимальный размер это n/k символов, повторений нет, использовать все числа, должны быть равными по количеству и по сумме чисел

Алан Гибизов @phaggi Куратор тега Python
merifry, задача делится на две части: алгоритм, т.е. как решать, и код, воплощающий алгоритм. У вас проблема с кодом или с алгоритмом? Можете алгоритм словами описать? Если проблема с алгоритмом, то надо писать в тэг «алгоритмы», а не «питон».
Решения вопроса 1
Ну тогда примерно так. Приправить, добавить thread-safety, избавиться от рекурсии и дичайшего выделения памяти по своему вкусу:
def solve(buckets: list[frozenset[int]], pool: frozenset[int], sum_: int, solved: set[frozenset[frozenset[int]]], tried: set[frozenset[frozenset[int]]]): assert all(x and len(set(len(b) for b in buckets)) == 1: solved.add(frozenset(buckets)) for x in pool: for i, bucket in enumerate(buckets): new_buckets = buckets[:] new_buckets[i] = bucket | if frozenset(new_buckets) not in tried: solve(new_buckets, pool - , sum_, solved, tried) return solved if __name__ == '__main__': for solution in solve([frozenset(), frozenset()], frozenset([1,2,3,4,5,6,7,8]), 18, set(), set()): print(solution)
А ещё это полный перебор. Жадные, щедрые и другие решения ищите где-нибудь здесь
