在 numpy 数组中用 NA 替换异常值
Replace outlers with NA in numpy array
给定一个像这样的 numpy 数组
[[100, 110, 0.01, 110], [120, 100, 112, 100], [4000, 100, 200, 100]]
如何用 NA 替换异常值?
[[100, 110, NA, 110], [120, 100, 112, 100], [NA, 100, 200, 100]]
至于离群值检测,我对平均值有 2 个 SD 很满意
我假设你有一个 SD 和在某处编码或导入的平均函数。
所以你应该这样编码:
sd = my_sd_function(my_array)
mean = my_mean_function(my_array)
outliers = (my_array > (mean + 2 * sd)) | (my_array < (mean - 2 * sd))
my_array[outliers] = NA
但请考虑:
- 说真的,我不知道你所说的 NA 是什么意思。也许
None
?
我不明白你的数组结构,无法做出相应的功能。或许这些功能可以满足您的需求?:
def my_mean_function(arr):
return arr.sum() / arr.size
def my_sd_function(arr):
mean = my_mean_function(arr)
sqrerr = ((arr - mean) ** 2).sum() / arr.size
return sqrt(sqrerr)
这里你应该知道的核心部分是实际 select 并根据你想要的条件更新数组元素。
在这里,您将使用 &
~
和 |
代替 and
not
和 or
关键字。这是因为 numpy 数组以某种方式定义了它们的实现以使用此类运算符(并且语言构造函数 and
or
和 not
实际上并不是可以重载的运算符)。
这样构造return个像数组一样可以被威胁的对象(你可以在console中打印outliers
/ipython看看我在说什么)。
第二部分是您可以将 my_array[...]
作为索引传递给 my_array[...]
,实际上是一个索引列表或类似的构造(例如切片),并以有效的方式检索/更改此类元素(IIRC 这种方法为 numpy 数组中基础原始数据 blob 中的数据创建名为 view 的东西。
给定一个像这样的 numpy 数组
[[100, 110, 0.01, 110], [120, 100, 112, 100], [4000, 100, 200, 100]]
如何用 NA 替换异常值?
[[100, 110, NA, 110], [120, 100, 112, 100], [NA, 100, 200, 100]]
至于离群值检测,我对平均值有 2 个 SD 很满意
我假设你有一个 SD 和在某处编码或导入的平均函数。
所以你应该这样编码:
sd = my_sd_function(my_array)
mean = my_mean_function(my_array)
outliers = (my_array > (mean + 2 * sd)) | (my_array < (mean - 2 * sd))
my_array[outliers] = NA
但请考虑:
- 说真的,我不知道你所说的 NA 是什么意思。也许
None
? 我不明白你的数组结构,无法做出相应的功能。或许这些功能可以满足您的需求?:
def my_mean_function(arr): return arr.sum() / arr.size def my_sd_function(arr): mean = my_mean_function(arr) sqrerr = ((arr - mean) ** 2).sum() / arr.size return sqrt(sqrerr)
这里你应该知道的核心部分是实际 select 并根据你想要的条件更新数组元素。
在这里,您将使用 &
~
和 |
代替 and
not
和 or
关键字。这是因为 numpy 数组以某种方式定义了它们的实现以使用此类运算符(并且语言构造函数 and
or
和 not
实际上并不是可以重载的运算符)。
这样构造return个像数组一样可以被威胁的对象(你可以在console中打印outliers
/ipython看看我在说什么)。
第二部分是您可以将 my_array[...]
作为索引传递给 my_array[...]
,实际上是一个索引列表或类似的构造(例如切片),并以有效的方式检索/更改此类元素(IIRC 这种方法为 numpy 数组中基础原始数据 blob 中的数据创建名为 view 的东西。