此代码片段描述了我一直遇到的一个问题.出于某种原因,rounded_data似乎是四舍五入的,但一旦通过np.uniquenp.column_stackresult_array似乎是未四舍五入的,同时rounded_data仍然是四舍五入的.

rounded_data = data_with_target_label.round(decimals=2)

unique_values, counts = np.unique(rounded_data, return_counts=True)
result_array = np.column_stack((unique_values, counts))

print(rounded_data)
print(result_array)

结果:

443392    0.01
443393    0.00
443394    0.00
443395    0.00
443396    0.11
          ... 
452237    0.04
452238    0.00
452239    0.00
452240    0.00
452241    0.00
Name: values, Length: 8850, dtype: float32
[[0.00000000e+00 4.80000000e+01]
 [9.99999978e-03 2.10000000e+01]
 [1.99999996e-02 1.10000000e+01]
 ...
 [3.29000015e+01 1.00000000e+00]
 [3.94099998e+01 1.00000000e+00]

推荐答案

这是因为您的收件箱为float32,而numpy中的默认数字格式为float64.因此,float 32中四舍五入的数字在float 64中不会明显四舍五入,因为数字表示方式有点不同. 解决方案是将输入数组转换为float 64或将结果_数组转换为float 32.

Solution 1

将numpy数组转换为float 32:

rounded_data = data_with_target_label.round(decimals=2)

unique_values, counts = np.unique(rounded_data, return_counts=True)
result_array = np.column_stack((unique_values, counts))

result_array = np.float32(result_array)

Solution 2

转换输入数据.例如,输入是pd.DataFrame(或pd.Series):

df = pd.DataFrame({'vals': np.array([0.013242, 
                                     3.94099998, 
                                     9.99999978, 
                                     0.03234, 
                                     0.05532, 
                                     33.22, 
                                     33.44, 
                                     55.66])}, dtype = 'float32')


rounded_data = df['vals'].astype('float64').round(decimals=2)

unique_values, counts = np.unique(rounded_data, return_counts=True)

result_array = np.column_stack((unique_values, counts))

Python相关问答推荐

jit JAX函数中的迭代器

Python中使用时区感知日期时间对象进行时间算术的Incredit

Python Hashicorp Vault库hvac创建新的秘密版本,但从先前版本中删除了密钥

TARete错误:类型对象任务没有属性模型'

非常奇怪:tzLocal.get_Localzone()基于python3别名的不同输出?

查找两极rame中组之间的所有差异

图像 pyramid .难以创建所需的合成图像

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

数据抓取失败:寻求帮助

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

Odoo 16使用NTFS使字段只读

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

Python逻辑操作作为Pandas中的条件

如何在达到end_time时自动将状态字段从1更改为0

剪切间隔以添加特定日期

在代码执行后关闭ChromeDriver窗口

在用于Python的Bokeh包中设置按钮的样式

Python如何导入类的实例

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?

在MongoDB文档中仅返回数组字段