1. 程式人生 > 程式設計 >淺談python 中的 type(), dtype(), astype()的區別

淺談python 中的 type(), dtype(), astype()的區別

如下所示:

函式 說明
type() 返回資料結構型別(list、dict、numpy.ndarray 等)
dtype()

返回資料元素的資料型別(int、float等)

備註:1)由於 list、dict 等可以包含不同的資料型別,因此不可呼叫dtype()函式

2)np.array 中要求所有元素屬於同一資料型別,因此可呼叫dtype()函式

astype()

改變np.array中所有資料元素的資料型別。

備註:能用dtype() 才能用 astype()

測試程式碼:

import numpy as np
class Myclass():
 pass
 
a = [[1,2,3],[4,5,6]]
b = {'a':1,'b':2,'c':3}
c = np.array([1,3])
d = Myclass()
e = np.linspace(1,10)
c_ = c.astype(np.float)
f = 10
 
print("type(a)=",type(a))
print("type(b)=",type(b))
print("type(c)=",type(c))
print("type(d)=",type(d))
print("type(e)=",type(e))
print("type(f)=",type(f))
print("type(c_)=",type(c_))
 
# print(a.dtype) ## AttributeError: 'list' object has no attribute 'dtype'
# print(b.dtype) ## AttributeError: 'dict' object has no attribute 'dtype'
print(c.dtype)
# print(d.dtype) ## AttributeError: 'Myclass' object has no attribute 'dtype'
print(e.dtype)
print(c_.dtype)
# print(f.dtype) ## AttributeError: 'int' object has no attribute 'dtype'
 
# print(a.astype(np.int)) ## AttributeError: 'list' object has no attribute 'astype'
# print(b.astype(np.int)) ## AttributeError: 'dict' object has no attribute 'astype'
print(c.astype(np.int))
# print(d.astype(np.int)) ## AttributeError: 'Myclass' object has no attribute 'astype'
print(e.astype(np.int))
# print(f.astype(np.int)) ## AttributeError: 'int' object has no attribute 'astype'

補充知識:pandas astype()錯誤

由於資料出現錯誤

DataError: No numeric types to aggregate

改正以後才認識到astype的重要性。

Top15['populations'] = Top15['Energy Supply'].div(Top15['Energy Supply per Capita']).astype(float)
df_mean = ((df.set_index('Continent').groupby(level=0)['populations'].agg({'mean' : np.mean})))
#加了astype(float)後無錯誤

以上這篇淺談python 中的 type(),dtype(),astype()的區別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。