![](/img/trans.png)
[英]numpy where: how to find a 2D array's index in a 3D array by matching a 1D array?
[英]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.