使用list(app_train.columns[list(app_train.dtypes.isin([np.int64, np.float64]))])list(app_train.columns[list(app_train.dtypes.isin(dtype_select))])與list(app_train.columns[list(app_train.dtypes.isin([np.dtype('int64')跑出的結果都不一致
Hi All,
Day9解答中:
我用三種方法來測以下語法,三個方法找出來的答案都不一樣,
不知到為什麼?
numeric_columns1 = list(app_train.columns[list(app_train.dtypes.isin([np.int64, np.float64]))])
print("1 Numbers of remain columns " , len(numeric_columns1))
dtype_select = ['int64', 'float64']
numeric_columns2 = list(app_train.columns[list(app_train.dtypes.isin(dtype_select))])
print("2 Numbers of remain columns " , len(numeric_columns2))
numeric_columns3 = list(app_train.columns[list(app_train.dtypes.isin([np.dtype('int64'), np.dtype('float64')]))])
print("3 Numbers of remain columns " , len(numeric_columns3))
1 Numbers of remain columns 41
2 Numbers of remain columns 65
3 Numbers of remain columns 106
請問差別在那裡?
未何結果不一樣?
而且,有時重跑時(Jupyter restart),前兩個答案會不一樣, 不知道為什麼?
不或大概可以推論用np.dtype() 因該是最好的方法。
回答列表
-
2019/09/05 下午 09:36張維元 (WeiYuan)贊同數:4不贊同數:0留言數:0
嗨,這邊的 int64 或 float64 是有可能依照電腦規格改變的(不過同一台電腦應該不變,這邊我覺得很怪)。意思是在解答的電腦上資料是用 64 bit 作儲存,但在你的電腦可能是 32 bit。以下兩點建議:
(1) 先用 df.info() 或 df.describe() 的方式看一下欄位
(2) 用 np.dtype('int'), np.dtype('float') 定義類別比較好
(3) 你可以比較這三者 type("int")、 type('np.dtype("int")')、type(np.int)