numpy.bincount是否支持numpy.float128类型权重?

时间:2016-11-26 01:35:05

标签: python-3.x numpy

以下是使用numpy.bincount

的示例代码
CultureInfo.CurrentCulture

如果运行它,我会收到以下错误报告:

import numpy as np
a = np.array([1.0, 2.0, 3.0], dtype=np.float128)
b = np.array([1, 2, 0], dtype=np.int)
c = np.bincount(b, weights=a)

这是----> 1 c = np.bincount(b, weights=a) TypeError: Cannot cast array data from dtype('float128') to dtype('float64') according to the rule 'safe' 的错误吗?是否存在可用于处理np.bincount类型权重的类似函数?

1 个答案:

答案 0 :(得分:1)

我不一定称它为bug,但不支持它。 bincount()功能已实现here。如您所见,weights参数直接转换为双精度数组:

if (!(wts = PyArray_ContiguousFromAny(weight, PyArray_DOUBLE, 1, 1))) {
    goto fail;
}

因此,无法将np.float128对象传递给bincount

当然,如果不需要额外的精度,您总是可以按照注释中的建议将其强制转换为np.float64对象。