以下是使用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
类型权重的类似函数?
答案 0 :(得分:1)
我不一定称它为bug,但不支持它。 bincount()
功能已实现here。如您所见,weights参数直接转换为双精度数组:
if (!(wts = PyArray_ContiguousFromAny(weight, PyArray_DOUBLE, 1, 1))) {
goto fail;
}
因此,无法将np.float128
对象传递给bincount
。
当然,如果不需要额外的精度,您总是可以按照注释中的建议将其强制转换为np.float64
对象。