Как отсортировать двухмерный массив по количеству нулей в строке?
Есть массив, некоторые элементы которого, могут быть равны нулю. Нужно отсортировать его по количеству нулей в строках, где строка с наибольшим количеством нулей будет последней, а с наименьшим (или без) - первой.
arr = np.array([[0.00, 0.00, 0.00, 0.13, 0.38],
[2.25, 10.32, 0.00, 0.49, 7.47],
[3.81, 0.00, 0.00, 1.75, 4.21],
[0.00, 0.00, 3.22, 0.00, 0.00]]);
В результате должно получиться:
[[2.25, 1.32, 0.0, 0.49, 7.47],
[3.81, 0.0, 0.0, 1.75, 4.21],
[0.0, 0.0, 0.0, 0.1, 0.38],
[0.0, 0.0, 3.22, 0.0, 0.0]]
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
res = arr[(arr==0).sum(axis=1).argsort()]
результат:
In [178]: res
Out[178]:
array([[ 2.25, 10.32, 0. , 0.49, 7.47],
[ 3.81, 0. , 0. , 1.75, 4.21],
[ 0. , 0. , 0. , 0.13, 0.38],
[ 0. , 0. , 3.22, 0. , 0. ]])