найти количество элементов столбца не привышающих заданное число

нужно найти количество элементов каждого столбца которое не превышает число R есть такой код, но работает не корректно:

import numpy as np
print('Input R: '); R = float(input()); res = 0;
a=np.array ([[0, 2.4, -6, 5, 0.8], 
             [1.5, 0, 0, -4.3, -3.5], 
             [0, 1.8, 3.2, -1.2, -1.3],
             [0, 0, -2.3, 0, -7.2],
             [3.3, -0.8, 0, 3.5, 8]])
print (a);
print('---------------------------')
b = a*5.13
print(b)
for i in range (5):
    if len(b)<R:
        res+=1
print('Result: ', res)

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

Автор решения: Павел

У вас все вопросы однотипные и решаются с использованием одной функции из numpy.

Прочитайте о базовых возможностях этой библиотеки, это не сложно.

a = np.array([[0, 2.4, -6, 5, 0.8],
              [1.5, 0, 0, -4.3, -3.5],
              [0, 1.8, 3.2, -1.2, -1.3],
              [0, 0, -2.3, 0, -7.2],
              [3.3, -0.8, 0, 3.5, 8]])

print(np.sum(a <= R)) # 17
→ Ссылка
Автор решения: DiMithras
res = sum(1 if el<R else 0 for col in b for el in col)

Не надо называть переменные с большой буквы, изучай PEP 8.

→ Ссылка
Автор решения: Alex Alex

Для подсчета ненулевых элементов в numpy есть специальная функция, она работает быстрее sum и циклов for.

import numpy as np
R = float(input('Input R: '))
a=np.array ([[0, 2.4, -6, 5, 0.8], 
             [1.5, 0, 0, -4.3, -3.5], 
             [0, 1.8, 3.2, -1.2, -1.3],
             [0, 0, -2.3, 0, -7.2],
             [3.3, -0.8, 0, 3.5, 8]])
b = a*5.13
res=np.count_nonzero(b<=R)
print('Result: ', res)
res_col=np.count_nonzero(b<=R, axis=0)
print('Result by columns: ', res_col)
→ Ссылка