我想在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结果 .
如果我理解正确,那就是轴参数的用途:
>>>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个数组,其中包含您要查找的点的坐标 . 如果您正在寻找第一点:
np.where(array_2D > array_3D)
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]
当然不是最优雅,思想,因为你不会直接有第一点 .
2 回答
如果我理解正确,那就是轴参数的用途:
否则它会穿过扁平阵列 .
np.where(array_2D > array_3D)
将为您提供3个数组,其中包含您要查找的点的坐标 . 如果您正在寻找第一点:当然不是最优雅,思想,因为你不会直接有第一点 .