【问题标题】:Why converting a float list into numpy array changes the value of some variables?为什么将浮点列表转换为 numpy 数组会更改某些变量的值?
【发布时间】:2016-04-29 20:24:39
【问题描述】:

所以我有以下代码sn-p:

with open('dataset/train/problem.csv', 'r') as p:
raw_x = csv.reader(p)
data_x = []
for ix in raw_x:
    data_x.append([float(i) for i in ix])
print(data_x)

这将打印以下输出:

[[217.0, 118.0, 0.63, 755.0, 1071.0], [217.0, 118.0, 0.63, 755.0, 1071.0],...]

现在我正在尝试将此结构转换为浮点数的 numpy 数组,以便可以将其与 scikit-learn 一起用作观察输入。但是当我尝试做以下事情时

X = np.array(data_x)
print(X)

它给出以下结果:

[  2.17000000e+02   1.18000000e+02   6.30000000e-01   7.55000000e+02
1.07100000e+03]
...
[  2.17000000e+02   1.18000000e+02   6.30000000e-01   7.55000000e+02
1.07100000e+03]

它仍然是浮点数,但十进制值不正确。

一直试图弄清楚为什么会发生这种情况,因为源数组也在浮点数中。我也尝试过提供type=floatastype,但似乎没有任何效果。

谢谢!

【问题讨论】:

    标签: python numpy floating-point scikit-learn


    【解决方案1】:

    列表和数组中的值相同。这只是一种不同的表现形式。

    您可以用科学计数法格式化 Python 浮点数:

    >>> '{:e}'.format(11.7)
    '1.170000e+01'
    

    NumPy 使用这种表示。就是这样。

    【讨论】:

    • 是的。 NumPy 数组可以与大多数(全部?)处理数组数据类型的 Python 包一起使用。
    【解决方案2】:

    数组中的值相同。例如,2.1700000000e+22.17 x 10^2217,与原始数组中的相同。

    numpy 数组使用科学记数法而不是标准十进制形式。

    【讨论】:

    • 我对它不是很有经验,但我相信。
    猜你喜欢
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2018-09-25
    • 2015-11-19
    • 2017-01-22
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多