Как вывести сумму столбцов и строк в python? - PullRequest
0 голосов
/ 12 февраля 2020

Я хотел бы вывести сумму каждой строки и сумму каждого столбца двумерного массива, например:

  • сумма row1 = 123 (числа не являются реальными суммами, например)
  • сумма строки2 = 123
  • сумма строки3 = 123

И то же самое со столбцами. Я знаю, как это сделать в java, но не знаю, как это сделать в python. Это мой код (отсутствует код для сумм строк и столбцов, потому что я не знаю, как это сделать):

from random import randint

dim1 = input("Insert first dimension: ")
dim1 = int(dim1)

dim2 = input("Insert second dimension: ")
dim2 = int(dim2)

table1d = []

for i in range(dim1):
    table2d = []
    for j in range(dim2):
        table2d.append(randint(1, 170))
    table1d.append(table2d)
print(table1d)

totalSum = sum(map(sum, table1d))
print(totalSum)

sumRows = 0
for i in range(0, len(table1d), 1):
    sumRows += table1d[i]

Ответы [ 3 ]

1 голос
/ 12 февраля 2020

Для строк вам нужно только

sums_in_rows = list(map(sum, table1d))

print(sums_in_rows)

Для столбцов нужно больше

sums_in_columns = [0]*len(table1d[0])  # create list for all results

for row in table1d:
    for c, value in enumerate(row):
        sums_in_columns[c] += value

print(sums_in_columns)

Вы также можете преобразовать его в массив numpy, и тогда у вас будет

import numpy as np

arr = np.array(table1d)

print('rows:',  arr.sum(axis=1))
print('cols:',  arr.sum(axis=0))
print('total:', arr.sum())

from random import randint

dim1 = input("Insert first dimension: ")
dim1 = int(dim1)

dim2 = input("Insert second dimension: ")
dim2 = int(dim2)

table1d = []
#x = 0
for i in range(dim1):
    table2d = []
    for j in range(dim2):
        table2d.append(randint(1, 170))
        #table2d.append(x)
        #x += 1
    table1d.append(table2d)
print(table1d)

sums_in_rows = list(map(sum, table1d))
print(sums_in_rows)

sums_in_columns = [0]*len(table1d[0])
for row in table1d:
    for c, value in enumerate(row):
        sums_in_columns[c] += value
print(sums_in_columns)

import numpy as np

arr = np.array(table1d)
print(arr.sum(axis=1))
print(arr.sum(axis=0))
print(arr.sum())
0 голосов
/ 12 февраля 2020

Вы можете использовать списки и функцию суммы, чтобы получить желаемый результат:

import random

rowCount = 3
colCount = 5

matrix = [ [random.randint(10,99) for _ in range(colCount)] for _ in range(rowCount) ]

for line in matrix:
    print(line)

for row in range(rowCount):
    print(f"sum row{row} = ",sum(matrix[row]))

for col in range(colCount):
    print(f"sum column{col} = ",sum(row[col] for row in matrix))


[90, 62, 86, 19, 13]
[33, 93, 38, 17, 29]
[11, 96, 91, 66, 81]

sum row0 =  270
sum row1 =  210
sum row2 =  345

sum column0 =  134
sum column1 =  251
sum column2 =  215
sum column3 =  102
sum column4 =  123
0 голосов
/ 12 февраля 2020
import numpy as np

Столбцы:

np.array(table1d).sum(axis=0)

Строки:

np.array(table1d).sum(axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...