Python 在numpy阵列中将Outler替换为NA
给定这样一个numpy数组Python 在numpy阵列中将Outler替换为NA,python,numpy,na,outliers,Python,Numpy,Na,Outliers,给定这样一个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 = my_sd_function(my_ar
[[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 = 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
这里您应该知道的核心部分是根据需要的条件实际选择和更新数组元素
在这里,您将使用&
和|
而不是和而不是和或关键字。这是因为numpy数组以某种方式定义了它们的实现,以利用这些操作符(而语言构造函数和或和非实际上不是可以重载的操作符)
这样的构造返回的对象可以像数组一样受到威胁(您可以在console/ipython中打印异常值
,看看我在说什么)
第二部分是,您可以作为索引传递到my_array[…]
,实际上是一个索引或类似结构(例如切片)的列表,并以有效的方式检索/更改这些元素(IIRC这种方法在numpy数组中的底层原始数据blob中创建称为数据视图的内容).我假设您在某处编码或导入了SD和mean函数
因此,您应该这样编写代码:
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
这里您应该知道的核心部分是根据需要的条件实际选择和更新数组元素
在这里,您将使用&
和|
而不是和而不是和或关键字。这是因为numpy数组以某种方式定义了它们的实现,以利用这些操作符(而语言构造函数和或和非实际上不是可以重载的操作符)
这样的构造返回的对象可以像数组一样受到威胁(您可以在console/ipython中打印异常值
,看看我在说什么)
第二部分是,您可以作为索引传递到my_array[…]
,实际上是一个索引或类似结构(例如切片)的列表,并以有效的方式检索/更改这些元素(IIRC这种方法在numpy数组中的底层原始数据blob中创建称为数据视图的内容).您能提供一个您到目前为止尝试过的示例吗,即某种循环通过数组元素的函数?目前这太少了,无法提供有意义的帮助。您能提供一个您迄今为止尝试过的示例吗,例如,某种循环通过数组元素的函数?这在目前来说太少了,无法提供有意义的帮助。是的,没有一个是我想要的,而不是NA。它给了我一个nan,我可以用它来过滤离群值SY——与NA相反,None是我所寻找的。它给了我一个nan,我可以用它来过滤异常值