gpt4 book ai didi

python - 使用 numpy 有效找到最低的非遮蔽点

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

这里的应用程序正在寻找“云基础”,但原则适用于任何地方。我有一个 numpy 屏蔽的 3D 数组(我们会说它对应于尺寸为 z、y、x 的 3D 网格框),其中我屏蔽了所有值小于 0.1 的点。我想要找到的是,在每个 x,y 点,未被屏蔽的最低 z 点索引(不是 z 中的最低值,最小 z 坐标)是多少。我可以想到一些简单的方法来做到这一点,例如:

for x points:
for y points:
minz=-1
for z points:
if x,y,z is not masked:
minz = z
break

然而,这看起来效率很低,我确信有一种更有效或更Pythonic的方法来做到这一点。我在这里缺少什么?

编辑:我不需要使用屏蔽数组,但这似乎是提出问题的最简单方法 - 我可以找到某个特定值下的最低点不使用掩码数组的阈值。

编辑 2:我正在寻找的想法(以 z=0 为最低点):

input:
[[[0,1],
[1,5]],

[[3,3],
[2,4]],

[[2,1],
[4,9]]]

threshold: val >=3
output:
[[1,1],
[2,0]]

最佳答案

假设 A 作为输入数组,您可以这样做 -

np.where((A < thresh).all(0),-1,(A >= thresh).argmax(0))

示例运行

运行#1:

In [87]: A
Out[87]:
array([[[0, 1],
[1, 5]],

[[3, 3],
[2, 4]],

[[2, 1],
[4, 9]]])

In [88]: thresh = 3

In [89]: np.where((A < thresh).all(0),-1,(A >= thresh).argmax(0))
Out[89]:
array([[1, 1],
[2, 0]])

运行#2:

In [82]: A
Out[82]:
array([[[17, 1, 2, 3],
[ 5, 13, 11, 2],
[ 9, 16, 11, 19],
[11, 16, 6, 3],
[15, 9, 14, 14]],

[[18, 19, 5, 8],
[13, 13, 17, 2],
[17, 12, 16, 0],
[19, 14, 12, 5],
[ 7, 8, 4, 7]],

[[10, 12, 11, 2],
[10, 18, 6, 15],
[ 4, 16, 0, 16],
[16, 18, 2, 1],
[10, 19, 9, 4]]])

In [83]: thresh = 10

In [84]: np.where((A < thresh).all(0),-1,(A >= thresh).argmax(0))
Out[84]:
array([[ 0, 1, 2, -1],
[ 1, 0, 0, 2],
[ 1, 0, 0, 0],
[ 0, 0, 1, -1],
[ 0, 2, 0, 0]])

关于python - 使用 numpy 有效找到最低的非遮蔽点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639257/

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