首页 > 解决方案 > np.prod 与 pint.UnitRegistry() 的单位 - python

问题描述

我正在尝试使用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'>]

我该如何解决这个问题?

标签: pythonnumpy

解决方案


基本pint不支持numpy.prod。有关支持的功能,请参阅文档。numpy

问题是pint.UnitRegistry()返回的对象类型pint.quantity.build_quantity_class.<locals>.Quantity不是数字数组,因此numpy.prod无法识别。

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)

推荐阅读