以矢量化方式获取(X,Y)坐标的min,max,argmin,argmax

时间:2018-03-26 17:31:14

标签: python arrays list numpy vector

我有一个坐标向量列表(x,y)如下:

coord=[[3,6],
[7,9],
[14,9],
[11,8],
[3,1],
[7,14],
[19,30]
]

我想得到什么?

  1. 从x坐标获取最小值然后打印给定的(x,y)向量

  2. 从x坐标获取最大值然后打印给定的(x,y)向量

  3. 从y coordintates获取最小值然后打印给定的(x,y)向量

  4. 从y coordintates获取最大值然后打印给定的(x,y)向量

  5. 从x坐标获取最小值,从y坐标获取最小值,然后打印给定的(x,y)向量(在其他术语中为最小向量)

  6. 从x坐标获取最大值,从y坐标获取最大值,然后打印给定的(x,y)向量(在其他术语中为最大向量)

  7. 这样做的有效和矢量化方法是什么?

2 个答案:

答案 0 :(得分:0)

首先,将嵌套的list转换为NumPy数组:

coord = np.array(coord)

现在,您可以按coord[:,0]获取一维x值,并按coord[:, 1]获取y值。使用np.argminnp.argmax函数来获取最小值/最大值的索引,您可以这样做。

xmin_index = np.argmin(coord[:, 0])
xmin_coord = coord[xmin_index]
print(xmin_coord)  # The (x,y) pair with minimum x, (3,6)

答案 1 :(得分:-1)

根据@jmd_dk提出的建议,我将其更新如下:

coord = np.array(coord)
xmin_value=np.min(coord[:,0])
min_x_vectors = coordinates[np.where(coordinates[:, 0] == xmin_value)]
minimum = np.argmin(min_x_vectors[:, 1])
x0,y0=min_x_vectors[minimum]

这会返回[3,1]而不是[3,6]