我正在努力从3d数组中获取正确的值。我有一个numpy.array(A),它表示图像的各层(layer,y,x)以及具有关联值的相同形状的第二个数组(B)。我需要找到A中每个位置的所有图层的最小值,并创建形状为(512,512)的最终图像(D),该图像根据A的最小值索引获取B的值。我可以提取正确的numpy.argmin()索引(C),但此后我迷路了。如何从B中获得正确的值?
A # Image Array of shape(4, 512, 512)
B # 2nd Image Array of shape(4, 512, 512)
C = numpy.argmin(A, axis=0) # get index of lowest value for each A(:, x, y)
D = B[C, :, :] # I want the value of B at index C for each (x,y)
我的D代码示例错误。在for循环中,它应该看起来像这样...
for y in range(512):
for x in range(512):
D[y, x] = B[ C[y, x], y, x ]
...但是我不知道如何以矢量化方式执行此操作(或者,您可能会称其为... pythonic方式)。我找不到能对多维数组和索引数组有用的示例。大量的文档也没有提供有用的信息。只发现了这个 select values in 3D array based on a 2D selection array (with indices values) ,但建议的解决方案是不正确的,而且也只是一个for循环。
如果某人比我了解更多,我将不胜感激。