我有一个二维核阵列:[[0,2],[0,3],[0,1],[1,0]]。这些元素表示xy轴上的点。例如,in[0,2]0是x,2是y
我想用minx和miny得到这个点。在这种情况下,它将是[0,1]。我知道使用for循环很容易做到这一点,但它需要太多资源。有没有一个numpy函数或什么东西来计算这个?

最佳答案

您可以首先找到x的最小值,然后找到y等于x的最小值的对:

np.min(xy[xy[:, 0] == np.min(xy[:, 0])], 0)

In [1]: xy
Out[1]:
array([[0, 2],
       [0, 3],
       [0, 1],
       [1, 0]])

In [2]: np.min(xy[xy[:, 0] == np.min(xy[:, 0])], 0)
Out[2]: array([0, 1])

即使对于大型阵列,速度也相对较快:
In [4]: timeit.timeit('np.min(xy[xy[:, 0] == np.min(xy[:, 0])], 0)',
                      'import numpy as np; xy = np.random.rand(100000, 2)',
                      number = 100)
Out[4]: 0.06858562525758316

旧版本稍慢(在@OliverW之前)。评论):
In [3]: timeit.timeit('np.min(xy[xy[:, 0] == np.min(xy, 0)[0]], 0)',
                      'import numpy as np; xy = np.random.rand(100000, 2)',
                      number = 100)
Out[3]: 0.20433111706540785

关于python - Python-获取二维numpy数组的最小坐标元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37610275/

10-08 20:47