Можно ли удалить/удалить каждое минимальное значение в каждой строке матрицы 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,:]))
Если восстановление желаемого результата из исходного массива вместо изменения исходного массива путем удаления минимальных значений разрешено, то этот подход должен выполнять работу:
# 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]])
Примечание. Этот подход предполагает, что в каждой строке должно быть только одно минимальное значение.
Если дубликаты не являются проблемой или если удаляется только один из них на строку, это приемлемо:
m, n = a.shape
np.where(np.arange(n-1) < a.argmin(axis=1)[:, None], a[:, :-1], a[:, 1:])