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

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)

结果:

[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

第二种情况:

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.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:Numpy数据类型转换astype,dtype

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dontla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值