如何使用Numpy筛选二维ndarray中y=0的元素并获取x最值坐标
解决方案
我们可以通过Numpy的布尔索引筛选目标子集,再结合argmin/argmax定位极值对应的坐标,全程用Numpy原生功能实现需求。
完整代码实现
import numpy as np n2d = np.array( [ [10,0], [11,0], [12,0], [0,1], [100,1], [200,1], [20,0], [21,0], [22,0], ]) # 筛选所有y=0的坐标 filtered_coords = n2d[n2d[:, 1] == 0] # 找到x值最小、最大的位置索引 min_x_idx = np.argmin(filtered_coords[:, 0]) max_x_idx = np.argmax(filtered_coords[:, 0]) # 提取目标坐标 min_coord = filtered_coords[min_x_idx] max_coord = filtered_coords[max_x_idx] print(min_coord) # 输出 [10 0] print(max_coord) # 输出 [22 0]
步骤说明
- 布尔索引筛选:
n2d[:, 1] == 0生成布尔数组,标记每一行的y值是否为0,用该数组索引原数组即可得到所有y=0的坐标子集。 - 定位极值索引:
filtered_coords[:, 0]取筛选后数组的x列,np.argmin返回该列最小值的位置索引,np.argmax返回最大值的位置索引。 - 提取坐标:用得到的索引从筛选后的数组中取出对应行,就是需要的目标坐标。
如果想一次性获取两个结果,可简化为:
result = filtered_coords[[np.argmin(filtered_coords[:, 0]), np.argmax(filtered_coords[:, 0])]] print(result) # 输出: # [[10 0] # [22 0]]
内容的提问来源于stack exchange,提问作者kazaki
相关产品推荐
相关产品推荐

