You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以向量化方式获取(X,Y)坐标的min、max、argmin、argmax及对应坐标

用NumPy向量化实现坐标向量的min/max操作

嘿,我来帮你搞定这个坐标向量的操作需求!既然要求向量化方式实现,那NumPy绝对是最优选择——它专门处理这类数组运算,比手动循环高效太多,代码也更简洁。

先把你的坐标列表转成NumPy数组,这是向量化操作的基础:

import numpy as np

# 原始坐标列表
coord = [[3,6], [7,9], [14,9], [11,8], [3,1], [7,14], [19,30]]
# 转成NumPy数组(方便向量化运算)
coord_array = np.array(coord)

接下来逐个完成你的需求:

1. 获取x坐标最小值对应的(x,y)向量

我们先提取所有x坐标(数组的第0列),找到最小值的索引,再用索引取出对应的整行向量:

# 找到x坐标最小值的第一个出现位置的索引
x_min_idx = np.argmin(coord_array[:, 0])
# 获取对应的(x,y)向量
x_min_vec = coord_array[x_min_idx]
print(x_min_vec)  # 输出: [3 6]

小贴士:如果有多个x坐标相同的最小值,np.argmin只会返回第一个出现的索引。如果要获取所有x最小的向量,可以用布尔索引:

x_min_val = np.min(coord_array[:, 0])
all_x_min_vecs = coord_array[coord_array[:, 0] == x_min_val]
print(all_x_min_vecs)  # 输出: [[3 6] [3 1]]

2. 获取x坐标最大值对应的(x,y)向量

和上面逻辑一致,只是把argmin换成argmax:

x_max_idx = np.argmax(coord_array[:, 0])
x_max_vec = coord_array[x_max_idx]
print(x_max_vec)  # 输出: [19 30]

3. 获取y坐标最小值对应的(x,y)向量

这次提取数组的第1列(y坐标),再找最小值索引:

y_min_idx = np.argmin(coord_array[:, 1])
y_min_vec = coord_array[y_min_idx]
print(y_min_vec)  # 输出: [3 1]

4. 获取y坐标最大值对应的(x,y)向量

同样用argmax处理y坐标列:

y_max_idx = np.argmax(coord_array[:, 1])
y_max_vec = coord_array[y_max_idx]
print(y_max_vec)  # 输出: [19 30]

5. 获取x坐标最小值与y坐标最小值的相关结果

这里分两种场景:

场景A:分别获取x最小和y最小的向量

直接用上面得到的x_min_vec和y_min_vec即可,它们分别对应x最小、y最小的向量。

场景B:获取同时满足x最小且y最小的向量

我们可以先拿到x和y的最小值,再用布尔索引筛选同时符合条件的向量:

# 先获取x和y的最小值
x_min_val = np.min(coord_array[:, 0])
y_min_val = np.min(coord_array[:, 1])
# 筛选同时满足两个条件的向量
combined_min_vec = coord_array[(coord_array[:, 0] == x_min_val) & (coord_array[:, 1] == y_min_val)]
print(combined_min_vec)  # 输出: [[3 1]]

刚好你的坐标列表里存在这样的向量——[3,1]的x是最小值3,y也是最小值1,所以能直接筛选出来。

内容的提问来源于stack exchange,提问作者eric lardon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:51:03