gpt4 book ai didi

python - Numpy根据XYZ获取最大值

转载 作者:太空宇宙 更新时间:2023-11-03 21:34:46 25 4
gpt4 key购买 nike

我正在尝试读取包含一些 XYZ 数据的 CSV 文件,但是当使用 Python Natgrid 进行网格化时会导致错误:两个输入三元组具有相同的 x/y 坐标。这是我的数组:

np.array([[41.540588, -100.348335, 0.052785],
[41.540588, -100.348335, 0.053798],
[42.540588, -102.348335, 0.021798],
[42.540588, -102.348335, 0.022798],
[43.540588, -103.348335, 0.031798]])

我想删除 XY 重复项并获得最大 Z 值。根据上面的示例,我想删除该数组的所有最小值:

np.array([[41.540588, -100.348335, 0.053798],
[42.540588, -102.348335, 0.022798],
[43.540588, -103.348335, 0.031798]])

我尝试过使用np.unique,但到目前为止我还没有任何运气,因为它不适用于行(仅适用于列)。

最佳答案

这是一个numpy方式,首先按 Z 排序,然后找到每个唯一的第一个 XY配对和索引:

a = np.array([[41.540588, -100.348335, 0.052785],
[41.540588, -100.348335, 0.053798],
[42.540588, -102.348335, 0.021798],
[42.540588, -102.348335, 0.022798],
[43.540588, -103.348335, 0.031798]])

# sort by Z
b = a[np.argsort(a[:,2])[::-1]]
# get first index for each unique x,y pair
u = np.unique(b[:,:2],return_index=True,axis=0)[1]
# index
c = b[u]
>>> c
array([[ 4.15405880e+01, -1.00348335e+02, 5.37980000e-02],
[ 4.25405880e+01, -1.02348335e+02, 2.27980000e-02],
[ 4.35405880e+01, -1.03348335e+02, 3.17980000e-02]])

关于python - Numpy根据XYZ获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53304790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com