Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 12

Форматирование массива

28.11.2021, 18:37. Показов 3110. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, подскажите пожалуйста как использовать форматирование %g в двумерном массиве
Входные данные
6.8,7,3.7,7.7,3.1,6.8,6.3,4.7,5.4,5,7.8, 7.7
6.2,0.1,7.9,4.4,4.2,7,6.8,0.9,2.2,6.5,1. 7,0.6
0.5,6.8,0.8,0.8,4.4,3.9,4.1,3.8,6.1,3.9, 0.3,5.3
7.1,0.5,1.7,2.2,7.9,5.3,5.2,3.9,4.1,7.8, 3.9,4.5
3.1,4.1,7.5,1.5,3.9,3.5,3.8,4.5,3.9,7.7, 6.2,6
3.2,0.7,3.8,6.1,4.1,5.5,3.5,5.1,1.7,6.4, 7.3,1.9
2.4,0.9,6.2,5.6,2.6,5.9,1.7,7.2,5.4,4.2, 2.3,2.7
5.4,5,7.2,2.6,3.3,3.7,0.8,7.6,5.9,7,7.8, 7.3
2,3.7,2.3,6.1,4.5,2.5,0.9,1.6,5.6,6.5,7. 1,6.6
0.6,6.4,4.7,7.5,7.3,4.9,4.7,4.4,0.5,2.3, 7.5,4.7
2.5,4.4,0.4,5.5,1,0.3,2.9,5.8,7.9,2.9,4. 3,0.3
1.5,1.9,1.2,7.3,0.2,0.7,5.5,2.8,3.9,0.2, 0.5,2.3
2.1,3.8,2.1,2.9,1.1,5.5,4.1,7.8,7.2,3.7, 0.4,7.9
6.6,2.6,3.4,5.2,2.7,1.2,1,7.5,7.8,3.5,7. 2,0.5
6.1,4,2.6,6.6,3.5,7.4,6.1,1.6,5.3,5.8,0. 3,2.2
0.7,4.6,1.6,5,4.5,0.5,2.1,4.6,1.5,0.1,2. 4,2.9
2.4,4.3,7.3,3.9,2.5,0.4,7.8,1.6,3.2,3.9, 4.3,6.2
1.5,2.9,4,5,0.3,7.6,3,2.5,1.5,3.7,5.3,0. 9
7.3,8,2.6,1,6.7,2.8,1.4,2.4,7.5,0.3,1.5, 0.2
4.9,6.1,1.2,6.1,4.6,3.3,3.1,6.5,6.1,4.2, 7.1,0.3
2.1,2,2.5,4.9,2.5,4.1,7.7,2.1,1.4,1.9,7. 7,6.3
2,1.3,3.7,1.5,6.7,1.6,6.3,6.7,7.9,2,4.2, 0.2
6.7,2.7,5.9,5.7,5.4,0,1.4,6.1,7.5,6.4,5. 4,7.2
6,7.8,7.1,3.3,6.2,3.2,0.8,3.1,2.5,7.6,1. 8,2
4.2,1.8,1.5,2.8,8,1,6.4,4.3,6.6,7.9,7.9, 3.2
6.4,4.5,7.3,7.4,4.8,7.2,1.8,6.8,4.8,2.5, 5.1,0.9
1.3,4.4,1.6,6.9,3.1,7,1.7,4.6,0.3,7.1,1. 7,6.7
7.7,4,0.8,4.2,4.1,2.4,0.8,2.6,3,6.8,0.5, 5.2
2.8,3.8,0.6,6.4,1.1,7,1.4,7.3,0.1,5.4,0. 5,2.8
1.9,3.4,2.5,7.4,6.2,0.3,3.1,4.2,5.1,3.2, 0.7,5
Программа
Python
1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np
o = open('output.csv', "w", encoding="utf-8")
f = open('input.csv', "r", encoding="utf-8")
a = np.loadtxt(f, delimiter = ',')
for i in range(len(a)):
    for j in range(len(a[i])):
        if i % 2 == 0 and j % 2 == 1:
            a[i][j] = a[i][j]/2
        if i % 2 == 1 and j % 2 == 0:
            a[i][j] = a[i][j]
 
    print(*a[i],sep = ',')
Необходимо избавиться от незначащих нулей 5. -> 5 , с помощью "%g"
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2021, 18:37
Ответы с готовыми решениями:

Форматирование массива в pandas
Не подскажите как из массива вида сделать массив вида , , ... ]. Что-то туплю, никак не могу найти.

Форматирование массива в Си
Пусть дано 100 целых чисел. Напечатайте сначала все отрицательные из них, а потом все остальные. прошу код на Си

Форматирование текстового массива
Есть следующий код, в котором создается и заполняется текстовый массив с клавиатуры со "стоп-словом" #. #include...

10
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
28.11.2021, 19:39
veles09,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
....
print(a)
a[::2, 1::2] /=2
 
# заменил оператором выше
"""for i in range(len(a)):
    for j in range(len(a[i])):
        if i % 2 == 0 and j % 2 == 1:
            a[i][j] = a[i][j]/2
        if i % 2 == 1 and j % 2 == 0:
            a[i][j] = a[i][j]"""
 
# для "гарантии". Но и без неё без нулей...
a = np.round(a,1)
 
print()
print(a)
Добавлено через 12 минут
Только заметил - часть массива в целый тип данных? Numpy не позволяет разный тип данных, кроме стрктуированных массивов. Но и там разные типы, но, например, в столбце тип данных всех элементов одинаковый.
Можно через строковый тип всех элементов, но думаю, массив нужен для математических расчетов...
1
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 12
28.11.2021, 20:38  [ТС]
За срезы спасибо) но всё таки хотелось увидеть форматирование через f-string. В том и смысл задачи, что все данные в нём float, но у некоторых значений можно отбросить нули 5. -> 5 без преобразования типа данных, с помощью "%g"
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
28.11.2021, 21:03
Python
1
2
num = 5.0
print(f'{num:g}')
0
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 12
28.11.2021, 21:16  [ТС]
Уважаемый, необходимо обработать массив а не одно число, и чтобы вывод был построчно как в моём примере
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
28.11.2021, 21:32
Цитата Сообщение от veles09 Посмотреть сообщение
Уважаемый, необходимо обработать массив а не одно число, и чтобы вывод был построчно как в моём примере
Python
1
2
3
4
5
6
7
8
9
10
for i in range(len(a)):
    for j in range(len(a[i])):
        if i % 2 == 0 and j % 2 == 1:
            a[i][j] = a[i][j] / 2
        if i % 2 == 1 and j % 2 == 0:
            a[i][j] = a[i][j]
 
    str_format = len(a[i]) * '{:g}, '
    fmt_str = str_format.format(*a[i])
    print(fmt_str)
1
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
29.11.2021, 00:03
veles09, если только для вывода, то:
Python
1
2
for row in np.char.replace(a.astype(str),'.0',''):
    print(*row)
0
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 12
29.11.2021, 12:21  [ТС]
Цитата Сообщение от Alexarh Посмотреть сообщение
Python
1
2
3
4
5
6
7
8
9
for i in range(len(a)):
    for j in range(len(a[i])):
        if i % 2 == 0 and j % 2 == 1:
            a[i][j] = a[i][j] / 2
        if i % 2 == 1 and j % 2 == 0:
            a[i][j] = a[i][j]
str_format = len(a[i]) * '{:g}, '
    fmt_str = str_format.format(*a[i])
    print(fmt_str)
Тогда он ставит запятые после последнего элемента в строке, нужен вывод как в вводе

Добавлено через 1 минуту
Цитата Сообщение от Gdez Посмотреть сообщение
Python
1
2
for row in np.char.replace(a.astype(str),'.0',''):
    print(*row)
Превратит 2.05 - > 25, а надо убрать незначащие нули. Пример вывода:
6.8,3.5,3.7,3.85,3.1,3.4,6.3,2.35,5.4,2. 5,7.8,3.85
3.1,0.1,3.95,4.4,2.1,7,3.4,0.9,1.1,6.5,0 .85,0.6
0.5,3.4,0.8,0.4,4.4,1.95,4.1,1.9,6.1,1.9 5,0.3,2.65
3.55,0.5,0.85,2.2,3.95,5.3,2.6,3.9,2.05, 7.8,1.95,4.5
3.1,2.05,7.5,0.75,3.9,1.75,3.8,2.25,3.9, 3.85,6.2,3
1.6,0.7,1.9,6.1,2.05,5.5,1.75,5.1,0.85,6 .4,3.65,1.9
2.4,0.45,6.2,2.8,2.6,2.95,1.7,3.6,5.4,2. 1,2.3,1.35
2.7,5,3.6,2.6,1.65,3.7,0.4,7.6,2.95,7,3. 9,7.3
2,1.85,2.3,3.05,4.5,1.25,0.9,0.8,5.6,3.2 5,7.1,3.3
0.3,6.4,2.35,7.5,3.65,4.9,2.35,4.4,0.25, 2.3,3.75,4.7
2.5,2.2,0.4,2.75,1,0.15,2.9,2.9,7.9,1.45 ,4.3,0.15
0.75,1.9,0.6,7.3,0.1,0.7,2.75,2.8,1.95,0 .2,0.25,2.3
2.1,1.9,2.1,1.45,1.1,2.75,4.1,3.9,7.2,1. 85,0.4,3.95
3.3,2.6,1.7,5.2,1.35,1.2,0.5,7.5,3.9,3.5 ,3.6,0.5
6.1,2,2.6,3.3,3.5,3.7,6.1,0.8,5.3,2.9,0. 3,1.1
0.35,4.6,0.8,5,2.25,0.5,1.05,4.6,0.75,0. 1,1.2,2.9
2.4,2.15,7.3,1.95,2.5,0.2,7.8,0.8,3.2,1. 95,4.3,3.1
0.75,2.9,2,5,0.15,7.6,1.5,2.5,0.75,3.7,2 .65,0.9
7.3,4,2.6,0.5,6.7,1.4,1.4,1.2,7.5,0.15,1 .5,0.1
2.45,6.1,0.6,6.1,2.3,3.3,1.55,6.5,3.05,4 .2,3.55,0.3
2.1,1,2.5,2.45,2.5,2.05,7.7,1.05,1.4,0.9 5,7.7,3.15
1,1.3,1.85,1.5,3.35,1.6,3.15,6.7,3.95,2, 2.1,0.2
6.7,1.35,5.9,2.85,5.4,0,1.4,3.05,7.5,3.2 ,5.4,3.6
3,7.8,3.55,3.3,3.1,3.2,0.4,3.1,1.25,7.6, 0.9,2
4.2,0.9,1.5,1.4,8,0.5,6.4,2.15,6.6,3.95, 7.9,1.6
3.2,4.5,3.65,7.4,2.4,7.2,0.9,6.8,2.4,2.5 ,2.55,0.9
1.3,2.2,1.6,3.45,3.1,3.5,1.7,2.3,0.3,3.5 5,1.7,3.35
3.85,4,0.4,4.2,2.05,2.4,0.4,2.6,1.5,6.8, 0.25,5.2
2.8,1.9,0.6,3.2,1.1,3.5,1.4,3.65,0.1,2.7 ,0.5,1.4
0.95,3.4,1.25,7.4,3.1,0.3,1.55,4.2,2.55, 3.2,0.35,5
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
29.11.2021, 12:46
Лучший ответ Сообщение было отмечено veles09 как решение

Решение

Цитата Сообщение от veles09 Посмотреть сообщение
Тогда он ставит запятые после последнего элемента в строке, нужен вывод как в вводе
Там подправить просто.
Python
1
2
3
4
5
6
7
8
9
10
for i in range(len(a)):
    for j in range(len(a[i])):
        if i % 2 == 0 and j % 2 == 1:
            a[i][j] = a[i][j] / 2
        if i % 2 == 1 and j % 2 == 0:
            a[i][j] = a[i][j]
 
    str_format = (len(a[i]) - 1) * '{:>4g} ' + '{:>4g}'
    fmt_str = str_format.format(*a[i])
    print(fmt_str)
Если просто через запятую
Python
1
2
3
4
5
6
7
8
9
10
for i in range(len(a)):
    for j in range(len(a[i])):
        if i % 2 == 0 and j % 2 == 1:
            a[i][j] = a[i][j] / 2
        if i % 2 == 1 and j % 2 == 0:
            a[i][j] = a[i][j]
 
    str_format = (len(a[i]) - 1) * '{:g},' + '{:g}'
    fmt_str = str_format.format(*a[i])
    print(fmt_str)
Добавлено через 20 минут
Или на весь массив
Python
1
print('\n'.join([','.join(["%g" % element for element in lst]) for lst in a]))
0
Эксперт Python
8849 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
29.11.2021, 13:01
veles09,
Python
1
2
3
4
b = a.astype(str)
a = np.where(np.char.endswith(b,'.0'), np.char.replace(b,'.0',''), b)
for row in a:
    print(*row)
Но, если честно, то смысл, кроме представления при выводе?..
0
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 12
29.11.2021, 16:53  [ТС]
Цитата Сообщение от Alexarh Посмотреть сообщение
print('\n'.join([','.join(["%g" % element for element in lst]) for lst in a]))
То что нужно, спасибо огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2021, 16:53
Помогаю со студенческими работами здесь

Форматирование элементов массива
необходимо отредактировать элементы массива: элемент с индексом 0 - до 0 знаков после запятой элемент с индексом 1 - до 1 знаков после...

Условное форматирование с использованием массива
Здравствуйте! Возникла такая проблема. Есть столбик значений в который дописываются новые данные. И есть другой столбик. Нужно выделить...

RichEdit или RTF форматирование текста, а лучше HTML форматирование
Привет формучани. Подскажите бесплатный компонент который позволил бы выводить текст в формате RTF или HTML. Очень хорошо подходит TMS...

Форматирование вывода двухмерного массива в textbox
Уважаемые форумчане, выручайте. В цикле выводятся значения из массивов time и fsy, в textbox10. Выводятся не красиво и не удобно. В массиве...

Форматирование массива php в xml и передача его постом
Добрый день.Решаю задачу подключение банковской услуги кредитования клиентов в интернет магазине.Для этого мне нужно по условиям банка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru