【发布时间】:2020-07-17 02:26:46
【问题描述】:
在我的实验中,我有一个尺寸为 25x431080 的 float64 类型的大型 2D np.ndarray X。我想计算 0 轴上的元素中位数以获得一个维度为 1x431080 的数组。假设我扭曲了原始数组的一行,使得中位数不受影响,例如,将其分配给原始元素范围之外的值。我的问题是中位数计算不会返回与以前完全相同的数组。
我想知道这是否是典型的精度问题。有什么办法可以用其他类型或功能解决它吗?
我在这里附上一个随机生成的示例 s.t.可以重现问题
import numpy as np
x = np.random.uniform(-1,1,(25,431080))
med1 = np.median(x, axis = 0)
x[13,:] = -100*np.ones(x.shape[1]) # distort one row to -100
med2 = np.median(x, axis = 0)
np.array_equal(med1, med2) # returns False
注意:在同一数组上重新计算中值会得到完全相同的结果,因此在程序的不同运行过程中不会出现精度损失或任何其他变化。
【问题讨论】:
标签: python numpy floating-point precision median