найти количество элементов столбца не привышающих заданное число
нужно найти количество элементов каждого столбца которое не превышает число 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)