当前位置:   article > 正文

python 为什么要用astype()函数对numpy数据类型进行转换,而不直接指定其dtype?float(64) float(32) int(64) int(32)(转换为整型int)_frombuffer为什么要用 astype

frombuffer为什么要用 astype

numpy中的数据类型转换,不能直接改原数据的dtype! 只能用函数astype()。否则你的元素个数可能会倍增或倍减,数值也会对应不上!

第一种情况:

import numpy as np

a = np.array([0.88518868, 0.4527473  ,0.61944059 ,0.1480421 ])
print(a)
print(a.dtype)

print('\n'+'-'*50+'\n')

a.dtype = 'float32'
print(a)
print(a.dtype)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

结果:

[0.88518868 0.4527473  0.61944059 0.1480421 ]
float64

--------------------------------------------------

[ 1.76177241e-06  1.84629714e+00 -6.12526950e+09  1.72637355e+00
  7.94156442e-28  1.77986014e+00  1.07201006e-16  1.52304208e+00]
float32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

第二种情况:

import numpy as np

a = np.array([14555555554.88518868, 0.45274735555  ,0.61944059444 ,0.14804215564 ])
print(a)
print(a.dtype)

print('\n'+'-'*50+'\n')

b= a.astype(np.float32)
print(b)
print(b.dtype)

print('\n'+'-'*50+'\n')

c= a.astype(np.float16)
print(c)
print(c.dtype)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

结果:

[1.45555556e+10 4.52747356e-01 6.19440594e-01 1.48042156e-01]
float64

--------------------------------------------------

[1.4555556e+10 4.5274734e-01 6.1944062e-01 1.4804216e-01]
float32

--------------------------------------------------

[   inf 0.4526 0.6196 0.1481]
float16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

参考文章1:Numpy数据类型转换astype,dtype

参考文章2:python强制类型转换astype

参考文章3:numpy数据类型dtype转换

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/742235
推荐阅读
相关标签
  

闽ICP备14008679号