Это должно работать
>>> import numpy as np
>>> import numpy.random
# create sample matrix
>>> a = numpy.random.randint(10,size=(8,8))
>>> a[0,0] = 100
>>> a
array([[100, 8, 6, 5, 5, 7, 4, 5],
[4, 6, 1, 7, 4, 5, 8, 5],
[0, 2, 0, 7, 4, 2, 7, 9],
[5, 7, 5, 9, 8, 3, 2, 8],
[2, 1, 3, 4, 0, 7, 8, 1],
[6, 6, 7, 6, 0, 6, 6, 8],
[6, 0, 1, 9, 7, 7, 9, 3],
[0, 5, 5, 5, 1, 5, 4, 4]])
# create mask
>>> mask = np.ones((8,8))
>>> mask = (mask - np.diag(np.ones(8))).astype(np.bool)
>>> mask
array([[False, True, True, True, True, True, True, True],
[ True, False, True, True, True, True, True, True],
[ True, True, False, True, True, True, True, True],
[ True, True, True, False, True, True, True, True],
[ True, True, True, True, False, True, True, True],
[ True, True, True, True, True, False, True, True],
[ True, True, True, True, True, True, False, True],
[ True, True, True, True, True, True, True, False]], dtype=bool)
# calculate the maximum
>>> np.amax(a[mask])
9
Вау, это ' это здорово. Вероятно, быстрее, чем использование маски для больших массивов. – hunse