我正在寻找一种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]
如果我理解正确的话,你只想比较第三维的特定索引。在这种情况下,numpy有一个内置的函数,你可以用它来替换你的循环。
output[:,:,7] = np.maximum(array_min[:,:,7], array_max[:,:,7])
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)
适用于两个以上的数组.
output = np.where((abs(array_min[...,7]) > array_max[..., 7])[..., None], array_min, array_max)