Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在二维numpy矩阵中找到前n个最小值_Python_Python 3.x_Numpy - Fatal编程技术网

Python 如何在二维numpy矩阵中找到前n个最小值

Python 如何在二维numpy矩阵中找到前n个最小值,python,python-3.x,numpy,Python,Python 3.x,Numpy,我有一个简单的二维numpy矩阵,我需要找到矩阵中的n个最小值。我发现了一些函数可以对numpy数组(argpartition)执行此操作,但我不确定它是否可以在矩阵上工作,并且不会改变矩阵本身。我还发现对于列表矩阵使用了heapmin,但它似乎很复杂,我有一个numpy矩阵。我希望矩阵不会改变,但我可以使用np.copy()忽略这个问题。最小值可以是任意位置。如果有人知道如何面对这个问题,这会非常有帮助。多谢各位 根据要求,我创建了一个简短的代码来强调我所需要的: import numpy a

我有一个简单的二维numpy矩阵,我需要找到矩阵中的n个最小值。我发现了一些函数可以对numpy数组(argpartition)执行此操作,但我不确定它是否可以在矩阵上工作,并且不会改变矩阵本身。我还发现对于列表矩阵使用了heapmin,但它似乎很复杂,我有一个numpy矩阵。我希望矩阵不会改变,但我可以使用np.copy()忽略这个问题。最小值可以是任意位置。如果有人知道如何面对这个问题,这会非常有帮助。多谢各位

根据要求,我创建了一个简短的代码来强调我所需要的:

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个元素。