numpy.maximum()在两个三维数组上的应用。

问题描述 投票:0回答:1

我正在寻找一种numpy方法来比较两个三维数组,并根据数组的给定索引返回一个新的三维数组,其中包含元素的最大值。例如,我的值在[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]
python numpy max
1个回答
2
投票

如果我理解正确的话,你只想比较第三维的特定索引。在这种情况下,numpy有一个内置的函数,你可以用它来替换你的循环。

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

1
投票
array_min = np.random.rand(16,16,8)
array_max = np.random.rand(16,16,8)
out = np.stack([array_min, array_max], axis=0).max(axis=0)

适用于两个以上的数组.


1
投票
output = np.where((abs(array_min[...,7]) > array_max[..., 7])[..., None], array_min, array_max)
© www.soinside.com 2019 - 2024. All rights reserved.