函数 | 用法 |
---|---|
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]])