使用代码:
def stat_function(x):
center = x[len(x) / 2]
ecdf = ECDF(xx)
percentile = (1 - ecdf(center)) * 100
print percentile
return percentile
print generic_filter(table,
function=stat_function,
size=window_size,
mode=mode,
extra_arguments=(-1,))
我得到了结果:
[[84 76 76 76 76 76 76 76 76 60]
[52 48 48 48 48 48 48 48 48 39]
[52 48 48 48 48 48 48 48 48 39]
[52 48 48 48 48 48 48 48 48 39]
[52 48 48 48 48 48 48 48 48 39]
[52 48 48 48 48 48 48 48 48 39]
[52 48 48 48 48 48 48 48 48 39]
[52 48 48 48 48 48 48 48 48 39]
[52 48 48 48 48 48 48 48 48 39]
[24 15 15 15 15 15 15 15 15 0]]
一切都很好,但如果我在返回之前在函数中打印“百分位”,我会看到所有的15实际上都是16.0,39实际上都是40.0。函数generic\u filter要求返回一个float,并返回“16.0”,但在构建的数组中,它被转换为int并变为“15”。的确
print percentile, int(percentile)
将显示“16.0,15”。
如果有人能帮助我理解为什么这个scipy函数需要一个float,然后把它转换成int,为什么int(16.0)给出15,我就在这里
PS:即使使用numpy.array(generif_filter(...), dtype=numpy.float)
,我也得到了错误的整数表
哇,解决办法很棘手。Scipy将把返回表的所有值转换为第一个表的类型。
例如:
所以,如果像我一样,scipy无缘无故地抛出他的输出,请更改您的输入;)
相关问题 更多 >
编程相关推荐