Удалить / удалить каждое минимальное значение в каждой строке матрицы NxM?

1

Можно ли удалить/удалить каждое минимальное значение в каждой строке матрицы NxM, создав новую матрицу?

Я пробовал это до сих пор без везения:

for n in range(0,len(matrix_name)):
    Ma = grades.remove(np.min(matrix_name[n,:]))

и это тоже:

for n in range(0,len(matrix_name)):
    Ma = np.delete(matrix_name,np.min(matrix_name[n,:]))
Теги:
numpy
matrix
minimum

2 ответа

1

Если восстановление желаемого результата из исходного массива вместо изменения исходного массива путем удаления минимальных значений разрешено, то этот подход должен выполнять работу:

# some test array
In [19]: arr
Out[19]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19]])

In [20]: r, c = arr.shape

# find the minimum along axis 1 (i.e. along rows)
In [21]: min_vals = np.min(arr, axis=1, keepdims=True)

# reshape the result to 2D array
In [22]: (arr[np.where(arr != min_vals)]).reshape(r, c-1)
Out[22]: 
array([[ 1,  2,  3],
       [ 5,  6,  7],
       [ 9, 10, 11],
       [13, 14, 15],
       [17, 18, 19]])

Примечание. Этот подход предполагает, что в каждой строке должно быть только одно минимальное значение.

0

Если дубликаты не являются проблемой или если удаляется только один из них на строку, это приемлемо:

m, n = a.shape
np.where(np.arange(n-1) < a.argmin(axis=1)[:, None], a[:, :-1], a[:, 1:])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню