我有一个分组astropy表,并想在各组上循环,并分别对每组执行剪裁平均值。你知道吗
下面的MWE说明了我要做的事情。当代码运行时,它不会抛出错误,而是列“c”的值保持为0.0。我觉得我可能从根本上误解了table环境是如何工作的,但不确定到底是什么。你知道吗
import numpy as np
from astropy.table import Table
from astropy.stats import sigma_clip
a = np.array([5.7, 5.9, 5.1, 5.3, 5.7, 5.4, 6.0, 8.6, 6.4, 5.2])
b = np.array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1])
c = np.zeros(len(a))
tab = Table( (a,b,c), names=('a','b','c'), masked=True )
tabGrp = tab.group_by('b')
for x in tabGrp.groups:
clipped = sigma_clip( x['a'], sigma=2)
x['c'] = clipped
对
tab
表进行分组时,会出现一个新的groups
属性is added。你知道吗您可以在每个
tabGrp
组上应用sigma_clip()
,在列表中只存储值,用存储的值创建一个新的MaskedColumn(正确地屏蔽值),并用新的裁剪列替换旧的c
列。你知道吗它不是很优雅,但似乎是做你需要的。你知道吗
结果是:
这就是你要找的吗?你知道吗
相关问题 更多 >
编程相关推荐