【问题标题】:Python: numpy data type castingPython:numpy 数据类型转换
【发布时间】:2016-05-09 23:25:05
【问题描述】:

我对看到的一些输出感到困惑。

如果 p 是一个浮点数的列表,有什么区别:

input = np.array([p]).astype('f')

input = np.array([p],float)

如果我使用第二个选项然后执行打印(输入),我总是会得到类似的结果:

[数组([-0.662, 0.246, 1.029])]

但如果我使用第一个选项,有时我会很简单: [[ 0.61900002 1.71300006 2.16899991]]

但其他时候我会得到 [array([])] 表单。

【问题讨论】:

    标签: python arrays python-3.x numpy


    【解决方案1】:

    解释如下:

    In [217]: np.array([1.1,1.2,1.3]).astype('f')
    Out[217]: array([ 1.10000002,  1.20000005,  1.29999995], dtype=float32)
    
    In [218]: np.array([1.1,1.2,1.3]).astype('float')
    Out[218]: array([ 1.1,  1.2,  1.3])
    
    In [219]: np.array([1.1,1.2,1.3]).astype(float)
    Out[219]: array([ 1.1,  1.2,  1.3])
    

    类型:

    In [220]: np.array([1.1,1.2,1.3]).astype(float).dtype
    Out[220]: dtype('float64')
    
    In [221]: np.array([1.1,1.2,1.3]).astype('f').dtype
    Out[221]: dtype('float32')
    

    所以使用np.array([p], 'f') 会得到相同的结果:

    In [224]: np.array([1.1,1.2,1.3],'f')
    Out[224]: array([ 1.10000002,  1.20000005,  1.29999995], dtype=float32)
    

    【讨论】:

    • 谢谢,MaxU,我发现部分差异与 float32 和 float64 有关,但你能解释为什么有时我会得到:[[ 0.61900002 1.71300006 2.16899991]],没有“数组”出现当我执行 print() 命令时?
    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2012-11-20
    • 2021-12-24
    相关资源
    最近更新 更多