我正在尝试将类型从Float64转换为Float32的阈值数组(来自scikit Learn的隔离林的文件)

for i in range(len(tree.tree_.threshold)):
    tree.tree_.threshold[i] = tree.tree_.threshold[i].astype(np.float32)

然后打印
for value in tree.tree_.threshold[:5]:
    print(type(value))
    print(value)

我得到的输出是:
<class 'numpy.float64'>
526226.0
<class 'numpy.float64'>
91.9514312744
<class 'numpy.float64'>
3.60330319405
<class 'numpy.float64'>
-2.0
<class 'numpy.float64'>
-2.0

我没有正确转换为Float32。我想将值及其类型转换为Float32,有人对此有任何解决方法吗?

最佳答案

问题是您不对numpy数组进行任何类型转换。您计算一个float32变量,并将其作为一个条目放入float64 numpy数组中。 numpy然后将其正确转换回float64

尝试这样的方法:

a = np.zeros(4,dtype="float64")
print a.dtype
print type(a[0])
a = np.float32(a)
print a.dtype
print type(a[0])

输出(使用python 2.7测试)
float64
<type 'numpy.float64'>
float32
<type 'numpy.float32'>

在您的情况下,a是数组tree.tree_.threshold

关于python - 将numpy数组类型和值从Float64转换为Float32,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45955186/

10-12 18:44