Задание по массивам

Tim24

Новичок
Пользователь
Фев 21, 2022
12
0
1
Господа, нужно ещё 1. Крч, тема массивы. Моё задание из листочка: Найти среднее арифметическое абсолютное значение элементов каждого столбца. Вот как я делал, но как итог, это просто не правильно...

Python:
a = [[1, 2, 3], [4, -5, 6], [1, 2, 6], [2, 3, 5]]

for i in a:
print(i)

cols = [[]]

for i in a:
for j in range(len(i)):
if len(cols) <= j:
cols.append([])
cols[j].append(abs(i[j]))

for col in cols:
avg = sum(col) / len(col)
print(avg)
Как итог, училка (50+ лет) тупо орёт мне зачем тебе делать через if. Тоесть этот ряд:
Python:
if len(cols) <= j:
cols.append([])

Просто не нужен. Не смотря на то, что тема двухмерные массивы, тут их быть не должно, она так сказала. Это ваще просто лишнее:
Python:
cols = [[]]

Если можно, можете дать свой пример, как ты вы сделали эту задачку? Реально надо, но я уже просто не могу это сделать.
(Лучше делать через массив просто. Только под моё условие что указано выше.)
 

Tim24

Новичок
Пользователь
Фев 21, 2022
12
0
1
Если говорить открыто, что я думаю. (Учусь в Миске, не очень предпочитаю пайтон. Поэтому даётся сложнее чем С++).
Ну я по сути правильно писал... Пока училка не придралась: "ЗАЧЕЕЕЕЕМ ТЫ ДЕЛАЕШЬ ЧЕРЕЗ IF. ЗАЧЕЕЕМ ТУТ ЭТА ПРОВЕРКА).
У НАС ТЕМА ДВУХМЕРНЫЕ МАССИВЫ.... А ТУТ ОН ПРОСТО НЕ НУЖЕН, ЧЕТ ТЫ РАЗОБРАТСЯ НЕ МОЖЕШЬ...

Ну крч, ситуация сложная. Я был на правильном пути, но как оказалось, проверка не нужна, двухмерные массивы тоже. Свой вариант как я делал прикрепил выше. По сути можете сделать по нём, но уже без:
1) cols = [[]]
2) if len(cols) <= j:
cols.append([])
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
можно так
Python:
import numpy as np

a = np.array([[1, 2, 3],
              [4, -5, 6],
              [1, 2, 6],
              [2, 3, 5]])
a_cols = a.shape[1]
for i in range(a_cols):
    print(sum(a[:,i]) / len(a[:,i]))

upd
без нумпая
Python:
a = [[1, 2, 3],
     [4, -5, 6],
     [1, 2, 6],
     [2, 3, 5]]

for i in range(len(a[0])):
    x = [x[i] for x in a]
    print(sum(x) / len(x))
 
Последнее редактирование:

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
можно так
Python:
import numpy as np

a = np.array([[1, 2, 3],
              [4, -5, 6],
              [1, 2, 6],
              [2, 3, 5]])
a_cols = a.shape[1]
for i in range(a_cols):
    print(sum(a[:,i]) / len(a[:,i]))

upd
без нумпая
Python:
a = [[1, 2, 3],
     [4, -5, 6],
     [1, 2, 6],
     [2, 3, 5]]

for i in range(len(a[0])):
    x = [x[i] for x in a]
    print(sum(x) / len(x))
ты упустил самое неприятное, надо все привести к положительным числам
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Python:
a = [[1, 2, 3],
     [4, -5, 6],
     [1, 2, 6],
     [2, 3, 5]]
for i in zip(*a):
    print(sum(map(abs, i)) / len(i))
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
ты упустил самое неприятное, надо все привести к положительным числам
да, не внимательно прочитал, но из моего кода тоже легко это сделать...
 
  • Мне нравится
Реакции: Vershitel_sudeb

Форум IT Специалистов