Python 两个三维阵列上的numpy.max()

Python 两个三维阵列上的numpy.max(),python,numpy,max,Python,Numpy,Max,我正在寻找比较两个3-D数组的numpy方法,并返回一个新的3-D数组,该数组包含基于给定数组索引的元素最大值。这里我的值用[y][x][7]表示,例如: output = numpy.zeros((16, 16, 8)) # we want to compare the values in [y,x,7] and only keep the element with max value for x in range(array_min.shape[1]): for y in range(a

我正在寻找比较两个3-D数组的numpy方法,并返回一个新的3-D数组,该数组包含基于给定数组索引的元素最大值。这里我的值用[y][x][7]表示,例如:

output = numpy.zeros((16, 16, 8))
# we want to compare the values in [y,x,7] and only keep the element with max value
for x in range(array_min.shape[1]):
  for y in range(array_min.shape[0]):                
    if abs(array_min[y][x][7]) > array_max[y][x][7]:
      output[y][x] = array_min[y][x]
    else:
      output[y][x] = array_max[y][x]
数组_min=np.random.rand16,16,8 数组_max=np.random.rand16,16,8 out=np.stack[array\u min,array\u max],axis=0.maxaxis=0
适用于2个以上的阵列。

如果我理解正确,您只需要比较第三维上的特定索引。在这种情况下,numpy有一个内置函数,您可以使用以下函数替换循环:

output[:,:,7] = np.maximum(array_min[:,:,7], array_max[:,:,7])

谢谢,有没有办法在maxabsmin,max中添加绝对值?另外,我想在输出数组中保持相同的维数。例如,这里output.shape仍然应该是16,16,8。如果需要,可以使用np.absarray_min[:,:,7]或类似的值。输出形状是16,16,8,因为output=numpy.zeros16,16,8代码上方需要这一行。发布的解决方案仅用于更换回路部件。请检查如何接受答案并欢迎使用SO。这导致操作数无法与形状16,16,16,8 16,16,8一起广播。我错过什么了吗?
output[:,:,7] = np.maximum(array_min[:,:,7], array_max[:,:,7])