我有一个二维核阵列:[[0,2],[0,3],[0,1],[1,0]]
。这些元素表示x
和y
轴上的点。例如,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/