.Найти сумму элементов в тех строках матрицы, которые содержат хотя бы один отрицательный элемент

необходимо реализовать через numy и без Для заданной матрицы размером 8 x 8 найти такие k, что элементы k-й строки матрицы совпадают с элементами k-ого столбца. Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.

Моя попытка выглядела так

import numpy as np
n = 8
A = np.random.random_integers(-1, 1, size=(n, n))
for Row in range(n):
    for Col in range(n):
        print("{0:>5.0f}".format(A[Row][Col]), end=" ")
    print()


def task(matr):
    s_tot = 0
    for row in matr:
        s_curr = 0
        flg = False
        for a in row:
            s_curr += a
            if a < 0: flg = True
        if flg: s_tot += s_curr
        print(f"Row: {row} |SumRow{s_curr}| Sum: {s_tot}")
print(task(A))

Ответы (1 шт):

Автор решения: MaxU

Отвечу на тот вопрос, который я понял:

Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.

Пример данных - матрица 3x3:

In [24]: a = np.array([[-1, 2, 3], [2, 3, 4], [5, 6, -20]])

In [25]: a
Out[25]:
array([[ -1,   2,   3],
       [  2,   3,   4],
       [  5,   6, -20]])

решение:

In [28]: a[(a < 0).any(axis=1)].sum(axis=1)
Out[28]: array([ 4, -9])

пошагово:

In [29]: (a < 0)
Out[29]:
array([[ True, False, False],
       [False, False, False],
       [False, False,  True]])

In [30]: (a < 0).any(axis=1)
Out[30]: array([ True, False,  True])

In [31]: a[(a < 0).any(axis=1)]
Out[31]:
array([[ -1,   2,   3],
       [  5,   6, -20]])

In [32]: a[(a < 0).any(axis=1)].sum(axis=1)
Out[32]: array([ 4, -9])
→ Ссылка