Python 如何使用numpy将除前n个值之外的所有矩阵值(2D数组)归零?

Python 如何使用numpy将除前n个值之外的所有矩阵值(2D数组)归零?,python,numpy,multidimensional-array,numpy-ndarray,Python,Numpy,Multidimensional Array,Numpy Ndarray,假设我有一个2D numpy数组。给定n,我希望对矩阵中除前n之外的所有元素进行nulify 我尝试了idx=(-y_pred).argsort(axis=-1)[:,:n]来确定最大n值的索引,但是idx形状是[H,W,n],我不明白为什么 我试过了- sorted_list = sorted(y_pred, key=lambda x: x[0], reverse=True) top_ten = sorted_list[:10] 但它并没有真正返回前10名指数 有没有一种有效的方法可以找到前

假设我有一个2D numpy数组。给定n,我希望对矩阵中除前n之外的所有元素进行nulify

我尝试了
idx=(-y_pred).argsort(axis=-1)[:,:n]
来确定最大n值的索引,但是
idx
形状是[H,W,n],我不明白为什么

我试过了-

sorted_list = sorted(y_pred, key=lambda x: x[0], reverse=True)
top_ten = sorted_list[:10]
但它并没有真正返回前10名指数

有没有一种有效的方法可以找到前n个索引,然后将其余的索引归零

编辑 输入是一个NxM值矩阵,输出是大小为NxM的相同矩阵,因此所有值都是0,但与前10个值对应的索引除外

这里有一种基于


以下代码将使
NxM
矩阵
X
无效

threshold = np.sort(X.ravel())[-n]  # get the nth largest value
idx = X < threshold
X[idx] = 0
threshold=np.sort(X.ravel())[-n]#获取第n个最大值
idx=X<阈值
X[idx]=0

注意:当存在重复值时,此方法可以返回一个包含超过n个非零元素的矩阵。

以下代码将使
NxM
矩阵
X
无效

threshold = np.sort(X.ravel())[-n]  # get the nth largest value
idx = X < threshold
X[idx] = 0
threshold=np.sort(X.ravel())[-n]#获取第n个最大值
idx=X<阈值
X[idx]=0

注意:当存在重复值时,此方法可以返回一个包含多于
n
非零元素的矩阵。

什么是
y_pred.shape
?@Alex Goft将您的输入和预期输出作为well@Divakar请参阅EDIT。您能否向我们展示最具代表性的样本数据?@kmario23无法查看。这里没有特定的跨步模式。什么是
y_pred.shape
?@Alex Goft将您的输入和预期输出作为well@Divakar请参阅EDIT。您能否向我们展示最具代表性的样本数据?@kmario23无法查看。那里没有特定的跨步模式。