np.prod с единицами из пинты. UnitRegistry () - python - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь найти объем воксела с заданными длинами сторон, используя pint.UnitRegistry()
Пример ошибки:

import pint
import numpy as np

ureg = pint.UnitRegistry()
voxel_size = (81.3, 30.2, 45.3) * ureg.micrometer
volume = np.prod(voxel_size)

Результат:

TypeError: no implementation found for 'numpy.prod' on types 
that implement __array_function__: [<class 'pint.quantity.build_quantity_class.<locals>.Quantity'>]

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 22 апреля 2020

В основном pint не поддерживает numpy.prod. См. документы для поддерживаемых numpy функций.

Проблема в том, что pint.UnitRegistry() возвращает объект типа pint.quantity.build_quantity_class.<locals>.Quantity, который не является массивом чисел, поэтому numpy.prod не распознает it.

Чтобы использовать pint для того, что вы пытаетесь сделать, попробуйте следующее ...

import pint
import numpy as np

ureg = pint.UnitRegistry()
vox_volume = voxel_size = [81.3] * ureg.micrometer * [30.2] * ureg.micrometer * [45.3] * ureg.micrometer
print(vox_volume)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...