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
添加回答
举报