如何从 python 中的 numpy lib 的 mean 方法中删除科学记数法
how to remove e scientific notation from mean method of numpy lib in python
我是 python 的新手,numpy library.I 正在我的自定义数据集上执行 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
计算是否有意义。 pandas
为 df.iloc[:,15]
打印什么?对于如此大的平均值,原始数据必须具有相似大小的值。来源如何显示它们?我想知道您的大多数值是否较小,正常值,并且您有一些过大的值(异常值)'distort' 平均值。
我认为您可以使用 values
:
简化数组提取
mean_vector = np.array(df.iloc[:,15],dtype=np.float64)
mean_vector = df.iloc[:,15].values
我是 python 的新手,numpy library.I 正在我的自定义数据集上执行 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
计算是否有意义。 pandas
为 df.iloc[:,15]
打印什么?对于如此大的平均值,原始数据必须具有相似大小的值。来源如何显示它们?我想知道您的大多数值是否较小,正常值,并且您有一些过大的值(异常值)'distort' 平均值。
我认为您可以使用 values
:
mean_vector = np.array(df.iloc[:,15],dtype=np.float64)
mean_vector = df.iloc[:,15].values