我想在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结果。
答案 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]
以为肯定不是最优雅的,因为您不会直接拥有第一点。