Чистое решение для Python:
In [16]: x = [[1, 20, 50],
...: [5, 6, 7],
...: [11, 42, 2],
...: [7, 32, None]]
...:
In [17]: [min((y for y in x if y is not None), default=None) for x in zip(*x)]
Out[17]: [1, 6, 2]
In [18]: [max((y for y in x if y is not None), default=None) for x in zip(*x)]
Out[18]: [11, 42, 50]
Обратите внимание, что для [[None]]
приведенный выше код возвращает [None]
, поскольку элементов min и max нет. Если вы хотите, чтобы этот код вызывал исключение, просто удалите default=None
. Если вы хотите исключить None
из результирующего списка, просто оберните его пониманием списка, например [z for z in (...) if z is not None]
Решение Numpy с приведением к float для автоматического преобразования None в nan:
In [12]: import numpy as np
In [13]: a = np.array(
...: [[1, 20, 50],
...: [5, 6, 7],
...: [11, 42, 2],
...: [7, 32, None]],
...: dtype=np.float)
...:
In [14]: np.nanmin(a, axis=0).astype(np.int)
Out[14]: array([1, 6, 2])
In [15]: np.nanmax(a, axis=0).astype(np.int)
Out[15]: array([11, 42, 50])
person
awesoon
schedule
25.04.2019
None
из каждого столбца, прежде чем братьmin
- person Boris   schedule 25.04.2019