首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于unboundlocalerror:在赋值之前引用了局部变量'K‘

关于unboundlocalerror:在赋值之前引用了局部变量'K‘
EN

Stack Overflow用户
提问于 2017-07-15 12:04:19
回答 1查看 294关注 0票数 0

我一直在尝试使用geostatistics library`,它的一个文件具有以下功能:

代码语言:javascript
复制
def krige( data, covfct, grid, method='simple', N=0, nugget=0 ):
    '''
    Krige an <Nx2> array of points representing a grid.

    Use either simple or ordinary kriging, some number N
    of neighboring points, and a nugget value.
    '''
    if method == 'simple':
        k = lambda d, c, u, N, nug: simple( d, c, u, N, nug ) 
    elif method == 'ordinary':
        k = lambda d, c, u, N, nug: ordinary( d, c, u, N, nug )
    print('method = ',method)
    M = len( grid )
    est, kstd = np.zeros(( M, 1 )), np.zeros(( M, 1 ))
    for i in range( M ):
        est[i], kstd[i] = k( data, covfct, grid[i], N, nugget )
    return est, kstd

在我看来,它包含两个可能的函数:simpleordinary,通过lambdalambda之后的u是否对应于est[i], kstd[i] = k( data, covfct, grid[i], N, nugget )中的grid[i]

我运行这里给出的示例代码,given here。例如,

代码语言:javascript
复制
import unittest
from geostatsmodels import kriging 
import numpy as np

data = np.array([[0,0,1],[1,0,3],[0,1,3],[1,1,4]])
hs = np.array([0.5,1.0,1.5,2.0])
bw = 0.5
u = [0.5,0.5]
N = 2
eps = 0.0001
kv = kriging.krige(data,kriging.spherical,hs,bw,u,N)

它给出了下面的错误信息,我不明白这是什么意思?

EN

回答 1

Stack Overflow用户

发布于 2017-07-15 12:11:57

代码语言:javascript
复制
if method == 'simple':
    k = lambda d, c, u, N, nug: simple( d, c, u, N, nug ) 
elif method == 'ordinary':
    k = lambda d, c, u, N, nug: ordinary( d, c, u, N, nug )

如果任何一个条件都不满足,k永远不会存在,所以它会给出UnboundLocalError

kv = kriging.krige(data,kriging.spherical,hs,bw,u,N)这里你传递的是bw = 0.5,它既不是'simple'也不是'ordinary'。您需要将所需的参数传递给函数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45114339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档