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

时间:2018-07-12 17:38:25

标签: python numpy

我想在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结果。

2 个答案:

答案 0 :(得分:2)

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

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

否则它将在平面阵列上运行。

答案 1 :(得分: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]

以为肯定不是最优雅的,因为您不会直接拥有第一点。