繁体   English   中英

在3D numpy数组中查找首次超过2D数组值的位置

[英]Find position in 3D numpy array where value of 2D array is first exceeded

我想在3D numpy数组中找到2D数组首先超过3D数组中的值的位置。 例如

import numpy as np
array_3D = np.random.rand(10, 3, 3)
array_2D = np.random.rand(3, 3)

np.argmax(array_2D > array_3D)

我得到的结果为0,但我想要一个2D数组,即每个网格单元的argmax结果。

如果我正确理解您的意思,那就是axis参数的用途:

>>>np.argmax(array_2D > array_3D,axis=0)
array([[1, 0, 0],
       [0, 2, 1],
       [0, 2, 0]])

否则,它将跨平面数组运行。

np.where(array_2D > array_3D)将为您提供3个具有所需点坐标的数组。 如果您要寻找第一点:

x =  np.where(array_2D > array_3D)[0][0]
y =  np.where(array_2D > array_3D)[1][0]
z =  np.where(array_2D > array_3D)[2][0]

当然,这不是最优雅的,因为您不会直接拥有第一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM