@Ui5509
Ui

Как определить отрицательные элементы в массиве, в строках где есть хотя бы один ноль?

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

Вот мой код, но он считает ВСЕ элементы если находит первый ноль в матрице, уже совсем запутался и не понимаю, как сделать так, чтобы он считал ТОЛЬКО отрицательные элементы в тех СТРОКАХ где есть хотя бы один ноль

from math import *
import numpy as np
from random import *

n=int(input("Размер матрицы NxN:"))

def MakeMatr(n):
    matr = np.random.randint(-2,1,size=(n,n))
    return matr

matr=MakeMatr(n)
print(matr)

a=0

for row in range(n):
    for col in range(n):
        if matr[row][col]==0:
            for row in range(n):
                if matr[col][row]<=0:
                    a+=1
print(a)
  • Вопрос задан
  • 2056 просмотров
Решения вопроса 3
@o5a
А цель специально сделать вне numpy? Потому что можно и через него посчитать:
sum(np.count_nonzero(row < 0) for row in matr if np.any(row == 0))
Ответ написан
milssky
@milssky
Координатор племени фиолетовых обезьянок
Ну, например, так
for row in range(n):
    if 0 in matr[row]:
        for col in range(n):
            if matr[row][col] < 0:
                a += 1
Ответ написан
Комментировать
adugin
@adugin Куратор тега Python
np.count_nonzero(matr[ np.any(matr == 0, axis=1) ])

matr[ np.any(matr == 0, axis=1) ].astype(np.bool).sum()

np.sum(np.any(matr == 0, axis=1, keepdims=True) & (matr < 0))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы