删除/删除NxM矩阵每行中的每个最小值?

时间:2018-06-17 22:49:29

标签: python numpy matrix minimum numpy-ndarray

是否可以删除/删除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,:]))

2 个答案:

答案 0 :(得分: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]])

注意:此方法假设每行中只有一个最小值。

答案 1 :(得分:0)

如果重复不是问题,或者每行只能删除其中一个:

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