Python 如何在二维numpy矩阵中找到前n个最小值
我有一个简单的二维numpy矩阵,我需要找到矩阵中的n个最小值。我发现了一些函数可以对numpy数组(argpartition)执行此操作,但我不确定它是否可以在矩阵上工作,并且不会改变矩阵本身。我还发现对于列表矩阵使用了heapmin,但它似乎很复杂,我有一个numpy矩阵。我希望矩阵不会改变,但我可以使用np.copy()忽略这个问题。最小值可以是任意位置。如果有人知道如何面对这个问题,这会非常有帮助。多谢各位 根据要求,我创建了一个简短的代码来强调我所需要的:Python 如何在二维numpy矩阵中找到前n个最小值,python,python-3.x,numpy,Python,Python 3.x,Numpy,我有一个简单的二维numpy矩阵,我需要找到矩阵中的n个最小值。我发现了一些函数可以对numpy数组(argpartition)执行此操作,但我不确定它是否可以在矩阵上工作,并且不会改变矩阵本身。我还发现对于列表矩阵使用了heapmin,但它似乎很复杂,我有一个numpy矩阵。我希望矩阵不会改变,但我可以使用np.copy()忽略这个问题。最小值可以是任意位置。如果有人知道如何面对这个问题,这会非常有帮助。多谢各位 根据要求,我创建了一个简短的代码来强调我所需要的: import numpy a
import numpy as np
def create_nm_matrix(n,m):
data=np.random.rand(n,m)
return data
#I need to find the n minimum values the values
#can repeat themself
def find_n_minimum_values(mat,n):
pass
mat=create_nm_matrix(100,50)
n=3
print("The array of the 3 minimum values in the matrix is:")
print(find_n_minimum_values(mat,n))
您可以展平该矩阵,使用
np.ravel
,然后对其进行排序:
>>> v
array([[2, 2, 3, 3, 4],
[4, 5, 5, 5, 6],
[6, 7, 7, 8, 8],
[9, 9, 9, 9, 9]])
>>> v1 = v.ravel() #flattened the array
>>> v1.sort() # sorted that.
>>> n = 10 # value of n
>>> v1[:n]
array([2, 2, 3, 3, 4, 4, 5, 5, 5, 6])
您可以展平该矩阵,使用
np.ravel
,然后对其进行排序:
>>> v
array([[2, 2, 3, 3, 4],
[4, 5, 5, 5, 6],
[6, 7, 7, 8, 8],
[9, 9, 9, 9, 9]])
>>> v1 = v.ravel() #flattened the array
>>> v1.sort() # sorted that.
>>> n = 10 # value of n
>>> v1[:n]
array([2, 2, 3, 3, 4, 4, 5, 5, 5, 6])
基本上,将数组展平,进行排序和选择
np.sort(x.ravel())[0:n]
基本上,将数组展平,进行排序和选择
np.sort(x.ravel())[0:n]
在整个矩阵中,或每行/每列中?请共享代码,以便我们可以帮助您。在整个矩阵中,这就是为什么我键入的最小值可以是任意位置。尝试按升序排序,然后从排序的numpy数组中获取前n个元素。在整个矩阵中,或每行/每列?请共享代码,以便我们可以帮助您。在整个矩阵中,这就是我键入最小值的原因。请尝试按升序排序,然后从排序的numpy数组中获取前n个元素。