python中的type,dtype,astype区别联系

函数用法
type(a)python内置函数,返回变量a的数据结构类型,例如list,dict,set,string,np.array等
dtype=float或者a.dtype返回(设置)np.array中数据元素的数据类型(int, float等)
a.astype(int)改变np.array中数据元素的数据类型,即修改dtype设置的数据类型

备注:

  • 由于list,tuple中的数据类型可以有多样,因此没有dtype属性,
  • np.array中要求所有元素属于同一数据类型,因此有dtype属性
    能用dtype才能用astype()
#### type用法
>>> a = [1,2,3,4,5] 
>>> b = ('abs','1',2,[1,2,3])
>>> type(a)
<class 'list'>
>>> type(b)
<class 'tuple'>
>>> a.dtype #不具有dtype属性,astype属性
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'dtype'
>>> a.astype(int)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'astype'
>>> b.dtype
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'dtype'

np.array中type,dtype,astype的用法

####### dtype属性的用法
import numpy as np
>>> c = np.array([[1,2,3],[4,5,6]])
>>> type(c)
<class 'numpy.ndarray'>
>>> c.dtype  #调用np.array的dtype属性
dtype('int32')
>>> c = c.astype(float) ## 修改np.array中的元素类型
>>> c.dtype
dtype('float64')
>>> c.astype(float)
array([[1., 2., 3.],
       [4., 5., 6.]])

>>> d = np.array([1,2,3],dtype=float) #直接在创建时设置array中所有元素的数据类型为float
>>> type(d)
<class 'numpy.ndarray'>
>>> d.dtype
dtype('float64')
>>> d.astype(int) #修改d中所有元素的数据类型,改为int
array([1, 2, 3])

torch中的张量也具有dtype属性,没有astype属性,但是可以通过tensor.to(torch.int)来修改数据元素类型

>>> import torch
>>> e = torch.tensor(c)
>>> type(e)
<class 'torch.Tensor'>
>>> e.dtype
torch.float64
>>> e.astype(torch.int32)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Tensor' object has no attribute 'astype'
>>> e.to(int)
tensor([[1, 2, 3],
        [4, 5, 6]])
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值