Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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/6/asp.net-mvc-3/4.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中的2D np.array中查找局部最小值_Python_Arrays_Numpy_Sorting - Fatal编程技术网

在Python中的2D np.array中查找局部最小值

在Python中的2D np.array中查找局部最小值,python,arrays,numpy,sorting,Python,Arrays,Numpy,Sorting,我有两列数组: A | 1 A | 2 A | 3 B | 4 B | 5 B | 6 其中A,B是常数。我想要的是找到每个参数A和B的最小值,所以这个操作的结果将是另一个2D数组,如下图所示: A | 1 B | 4 当只有一个常数A存在时,我成功地找到了最小值: MIN = np.where(arr == np.amin(arr[:,1])) output = arr[MIN[0],:] >> output = A | 1 但当阵列比这更复杂时,我无法将其自动

我有两列数组:

A  | 1 
A  | 2
A  | 3
B  | 4
B  | 5
B  | 6
其中A,B是常数。我想要的是找到每个参数A和B的最小值,所以这个操作的结果将是另一个2D数组,如下图所示:

A | 1
B | 4
当只有一个常数A存在时,我成功地找到了最小值:

MIN = np.where(arr == np.amin(arr[:,1]))
output = arr[MIN[0],:]
>> output = A | 1

但当阵列比这更复杂时,我无法将其自动化。谢谢你的帮助

您要查找的是函数
np.min
中的可选关键字
axis
。它允许您按列计算数组的最小值。 使用
np.min
也比使用
np.amin
好,因为它允许您在结果之前少执行一步(您立即得到最小值,而不是表中的索引)

试试这个:

将numpy导入为np
a=np.数组([[1,2,3],[4,5,6]]
np.最小值(a,轴=1)
#结果:数组([1,4])

您要查找的是函数
np.min
中的可选关键字
axis
。它允许您按列计算数组的最小值。 使用
np.min
也比使用
np.amin
好,因为它允许您在结果之前少执行一步(您立即得到最小值,而不是表中的索引)

试试这个:

将numpy导入为np
a=np.数组([[1,2,3],[4,5,6]]
np.最小值(a,轴=1)
#结果:数组([1,4])

您可以使用
np.unique
从第一列中提取唯一值,然后沿第一个轴使用布尔掩码:

np.stack([(x, a[a[:, 0] == x, 1].min()) for x in np.unique(a[:, 0])])
或者,如果您有权访问
pandas
,则可以创建一个数据帧,并在第一列上使用
grouby

import pandas as pd

result = pd.DataFrame(a).groupby(0).min().values

用于a设置示例的代码:

import numpy as np

a = np.array([[1, 1, 1, 2, 2, 2],
              [1, 2, 3, 4, 5, 6]]).T

可以使用
np.unique
从第一列中提取唯一值,然后沿第一个轴使用布尔掩码:

np.stack([(x, a[a[:, 0] == x, 1].min()) for x in np.unique(a[:, 0])])
或者,如果您有权访问
pandas
,则可以创建一个数据帧,并在第一列上使用
grouby

import pandas as pd

result = pd.DataFrame(a).groupby(0).min().values

用于a设置示例的代码:

import numpy as np

a = np.array([[1, 1, 1, 2, 2, 2],
              [1, 2, 3, 4, 5, 6]]).T

当我在我的两列数组上执行此操作时,它会打印第二个参数的每个值。当我更改为“axis=0”时,它会打印第二列的最小值,与参数A和B无关。参数A和B是数组的形状。当我在我的两列数组上执行此操作时,它会打印第二个参数的每个值。当我更改为“axis=0”时,它会打印第二列的最低值,与参数A和B无关,参数A和B是数组exactlyOk thx的形状!是否有快速方法访问初始数组a中的解决方案索引?我需要这些来构建作为问题解决方案呈现的数组。@aGingerGuy您可以在数组中添加额外的索引列,或者类似地在列表理解中屏蔽索引(并使用argmin)。但是在你的问题中,你用
A,1
表示一个数组,即不取索引,而是取第一列。好的,谢谢!是否有快速方法访问初始数组a中的解决方案索引?我需要这些来构建作为问题解决方案呈现的数组。@aGingerGuy您可以在数组中添加额外的索引列,或者类似地在列表理解中屏蔽索引(并使用argmin)。但在你的问题中,你用
A,1
表示一个数组,即不取索引,而是取第一列。