Это будет делать то, что, я думаю, вы просите:
import numpy as np
data = [np.array([[1, 2, 3],
[4, 5, 6],
[9, 11, 12]], dtype=int),
np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]], dtype=int)]
output = []
for arr in data:
centre = arr[len(arr)//2, len(arr)//2]
maximum = np.max(arr)
if maximum > (centre * 2):
output.append(maximum)
else:
output.append(centre)
print(output)
Вывод
[12, 5]
Как интересно, из Python 3.8 вы можете использовать назначение ( aka Walrus), чтобы сделать это в одной строке списка.
print([maximum if (maximum:= np.max(x)) > ((centre := x[(point := len(x)//2), point]) * 2) else centre for x in data])