亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 numpy 對象類型轉換為浮點類型

將 numpy 對象類型轉換為浮點類型

慕田峪7331174 2022-07-05 15:47:56
df.sample(3).values[:,1:].astype('float64')>> array([[  1.31199997e+02,   1.37149994e+02,   1.31199997e+02,          1.36320007e+02,   1.17088593e+02,   6.15015000e+05],       [  1.35199997e+02,   1.36570007e+02,   1.34330002e+02,          1.35639999e+02,   1.16504501e+02,   3.52835000e+05],       [  1.31419998e+02,   1.33500000e+02,   1.30759995e+02,          1.31779999e+02,   1.13189064e+02,   2.09805000e+05]])我正在使用 pandas 從 csv 文件中讀取數據,然后將數據轉換為numpy.float64但得到指數值,1.31199997e+02但預期的輸出應該是正常的數字,131.199997而不是1.31199997e+02我的代碼:df = pd.read_csv('data.csv')                # reading csvdf.dtypes>> Date          objectOpen         float64High         float64Low          float64Close        float64Adj Close    float64Volume         int64dtype: objecta = df.sample(3).values[:,1:]        # get array using `dataframe.values`a>> array([[131.199997, 137.149994, 131.199997, 136.320007, 117.08859299999999,        615015],       [135.199997, 136.570007, 134.330002, 135.639999, 116.504501, 352835],       [131.419998, 133.5, 130.759995, 131.779999, 113.18906399999999,        209805]], dtype=object)a = a.astype('float64')                # converting to `float64`a>> array([[  1.31199997e+02,   1.37149994e+02,   1.31199997e+02,          1.36320007e+02,   1.17088593e+02,   6.15015000e+05],       [  1.35199997e+02,   1.36570007e+02,   1.34330002e+02,          1.35639999e+02,   1.16504501e+02,   3.52835000e+05],       [  1.31419998e+02,   1.33500000e+02,   1.30759995e+02,          1.31779999e+02,   1.13189064e+02,   2.09805000e+05]])
查看完整描述

2 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

131.199997,1.31199997e+02是相同數字的等效顯示。它們都是“普通花車”。


在:


array([[131.199997, 137.149994, 131.199997, 136.320007, 117.08859299999999,

        615015],

       [135.199997, 136.570007, 134.330002, 135.639999, 116.504501, 352835],

       [131.419998, 133.5, 130.759995, 131.779999, 113.18906399999999,

        209805]], dtype=object)

每個元素都是 Python 浮點數,并且無論值如何,都會單獨格式化。注意有些字符串很長,有些則很短。


在:


a = a.astype('float64')                # converting to `float64`

a

array([[  1.31199997e+02,   1.37149994e+02,   1.31199997e+02,

          1.36320007e+02,   1.17088593e+02,   6.15015000e+05],

       [  1.35199997e+02,   1.36570007e+02,   1.34330002e+02,

          1.35639999e+02,   1.16504501e+02,   3.52835000e+05],

       [  1.31419998e+02,   1.33500000e+02,   1.30759995e+02,

          1.31779999e+02,   1.13189064e+02,   2.09805000e+05]])

數組作為一個整體顯示,使用的格式對于較小的值 ( 1e2, 100) 和較大的值 ( 1e5, ) 都同樣適用100000。使用這種格式,它使用整齊的列,顯示二維數組結構。


雖然您可以控制如何numpy顯示此類數組,但它不會更改基礎數值。對于快速numpy計算,您需要這個 numeric dtype,而不是那個object。


試試df.sample(3).values[:,1:-1]。那應該只是周圍的浮點值100。209805這是觸發科學記數法的最后一個整數列。


更好的是,在應用之前從數據框中選擇列“Open,High,Low,Close,Adj Close” .values。這些都是float64dtype,結果數組也將具有該 dtype。單獨選擇整數volume列。您已經分別處理字符串/對象date列。


嘗試:


a = df[df.columns[1:-1]].sample().values


查看完整回答
反對 回復 2022-07-05
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

嘗試添加:

np.set_printoptions(suppress=True)

作為下的第一行import numpy as np。


查看完整回答
反對 回復 2022-07-05
  • 2 回答
  • 0 關注
  • 222 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號