Перестановка строк матрицы в соответствии с характеристикой
Дана целочисленная прямоугольная матрица. Определить кол-во столбцов, не содержащих ни одного нулевого элемента (оформить в виде функции). - сделано
Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик (оформить в виде процедуры).
Я создаю отдельный массив xar, в котором находятся характеристики каждой строки. Подскажите пожалуйста, каким образом закончить мой способ, для перестановки строк. Либо же прошу подсказать альтернативный способ решения данной задачи.
Мой код:
#lab5_var2
import numpy as np
sz = (4, 5)
ar = np.random.randint(-5, 10, size = sz)
print(ar)
def func(ar):
l = 0
for i in range(5):
k = 0
for j in range(4):
if ar[j][i] != 0: k += 1
if k == 4: l += 1
return(l)
print("Кол-во столбцов, не содержащих ни одного нулевого элемента = ", func(ar))
def proc(ar):
xar = []
for i in range(sz[1]-1):
xar.append(0)
for i in range(sz[0]):
for j in range(sz[1]):
if ar[i,j] % 2 == 0 and ar[i,j] > 0:
xar[i] += ar[i,j]
print(xar)
proc(ar)
Ответы (1 шт):
import numpy as np
sz = (4, 5)
ar = np.random.randint(-5, 10, size = sz)
Определить кол-во столбцов, не содержащих ни одного нулевого элемента
print(len(ar[np.where(ar.all(axis=1))]))
отдельный массив xar, в котором находятся характеристики каждой строки
temp = np.where((ar > 0) & ~(ar % 2), 1, 0) * ar
xar = temp.sum(axis=1)
Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик
print(ar[xar.argsort()])