gpt4 book ai didi

python - 如何从python中numpy lib的mean方法中删除e科学记数法

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:06 31 4
gpt4 key购买 nike

我是 python 和 numpy 库的新手。我正在对我的自定义数据集进行 PCA。我从 pandas 计算数据帧每一行的平均值,但我得到以下结果作为平均值数组:

[   7.433148e+46
7.433148e+47
7.433148e+47
7.433148e+46
7.433148e+46
7.433148e+46
7.433148e+46
7.433148e+45
7.433148e+47]

我的代码是:

   np.set_printoptions(precision=6)
np.set_printoptions(suppress=False)
df['mean']=df.mean(axis=1)
mean_vector = np.array(df.iloc[:,15],dtype=np.float64)

print('Mean Vector:\n', mean_vector)

这个数字的含义是什么?我应该如何从号码中删除 e?

非常感谢任何帮助,提前致谢。

最佳答案

这些大数字是否真实?如果是,您希望如何显示它们?

复制并粘贴您的问题:

In [1]: x=np.array([7.433148e+46,7.433148e+47])

默认的 numpy 显示会添加几个小数点。

In [2]: x
Out[2]: array([ 7.43314800e+46, 7.43314800e+47])

改变精度不会改变太多

In [5]: np.set_printoptions(precision=6)
In [6]: np.set_printoptions(suppress=True)

In [7]: x
Out[7]: array([ 7.433148e+46, 7.433148e+47])

suppress 的作用较少。它抑制小浮点值,而不是大浮点值

suppress : bool, optional
Whether or not suppress printing of small floating point values using
scientific notation (default False).

这些数字之一的默认 python 显示 - 也是科学的:

In [8]: x[0]
Out[8]: 7.4331480000000002e+46

通过格式化命令,我们可以以超过 46 个字符的荣耀(或血腥细节)显示它:

In [9]: '%f'%x[0]
Out[9]: '74331480000000001782664341808476383296708673536.000000'

如果这是一个真正的值,我更愿意看到科学计数法。

In [11]: '%.6g'%x[0]
Out[11]: '7.43315e+46'

为了说明 suppress 的作用,请打印此数组的逆数组:

In [12]: 1/x
Out[12]: array([ 0., 0.])

In [13]: np.set_printoptions(suppress=False)

In [14]: 1/x
Out[14]: array([ 1.345325e-47, 1.345325e-48])

==============

我不太熟悉pandas,但我想知道你的mean计算是否有意义。 pandasdf.iloc[:,15] 打印什么?为了使平均值如此之大,原始数据必须具有相似大小的值。源如何显示它们?我想知道您的大多数值是否都较小,是正常值,并且有一些过大的值(异常值)会“扭曲”平均值。

我认为您可以使用简化数组提取:

mean_vector = np.array(df.iloc[:,15],dtype=np.float64)
mean_vector = df.iloc[:,15].values

关于python - 如何从python中numpy lib的mean方法中删除e科学记数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41654397/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com