Почему точечный продукт двух замаскированных векторов в numpy возвращает массив странной формы?

У меня есть следующий код:

result = np.ma.dot( array1, masked_array2 )

Что дает что-то вроде этого:

masked_array(data = 24.681441709536468,
         mask = False,
         fill_value = 1e+20)

result.data.shape дает:

()

Я могу получить доступ к значению, преобразовав его в число с плавающей запятой, например

float(result.data)

Это правильный способ доступа к данным?


person Anton Fedoruk    schedule 17.02.2017    source источник


Ответы (1)


Результатом является тензор 0D.

Обычно numpy преобразует тензор 0D в собственный тип

type(np.dot([1,2], [3,4])) # gives 'int'

Однако, когда результат представляет собой замаскированный массив, из-за наличия маски невозможно преобразовать его напрямую в собственный тип без потери информации. Таким образом, в результате вы получаете тензор 0D "странной формы".

Да, вы можете получить к нему доступ, преобразовав его в float.

person Kh40tiK    schedule 17.02.2017