У меня есть 3D-массив в numpy, который включает в себя nans.Мне нужно вернуть значение с наибольшей позицией индекса по оси 0.Ответ сводится к двумерному массиву.
Существует множество вопросов о поиске позиции индекса максимального значения вдоль оси ( Как получить индекс максимального элемента в массиве с нулевыми значениями)вдоль одной оси ), но это отличается от того, что мне нужно.
Пример трехмерного массива:
>>> import numpy as np
>>> foo = np.asarray([[[7,4,6],[4,2,11], [7,8,9], [4,8,2]],[[1,2,3],[np.nan,5,8], [np.nan,np.nan,10], [np.nan,np.nan,7]]])
>>> foo
array([[[ 7., 4., 6.],
[ 4., 2., 11.],
[ 7., 8., 9.],
[ 4., 8., 2.]],
[[ 1., 2., 3.],
[ nan, 5., 8.],
[ nan, nan, 10.],
[ nan, nan, 7.]]])
Я думал, что я приближался, используя np.where, но он возвращает все элементы, которые не являются nan.Не совсем то, что мне нужно, потому что я хочу массив (4,3)
.
>>> zoo = foo[np.where(~np.isnan(foo))]
>>> zoo
array([ 7., 4., 6., 4., 2., 11., 7., 8., 9., 4., 8.,
2., 1., 2., 3., 5., 8., 10., 7.])
Мне нужен ответ:
>>> ans = np.asarray([[1,2,3], [4,5,8], [7,8,10], [4,8,7]])
>>> ans
array([[ 1, 2, 3],
[ 4, 5, 8],
[ 7, 8, 10],
[ 4, 8, 7]])
РЕДАКТИРОВАТЬ: я отредактировал пример массива foo, чтобы задать вопросболее ясно.