2013-11-02 47 views
1

我正在编写一个用于查找K Nereast Neighbor的代码,并且需要使用numPy Python包进行计算。我附上下面的功能代码:Python导入包函数

#Import packages 
import numpy as np 

def knn(Q,R,k,classvar): 
#Function that does k-NN and selects the k Nearest Neighbours 
#Input parameters 
#Q array of Query points, R array of reference points 
#k is the no of closest points in k-NN 
#classvar is binary class variable either 1 or 0 


#for loop over all Query points 
#calculate distance from ith Query point to all reference points 
     dist = np.apply_along_axis(np.linalg.norm, 1, R-Q) 
#sort distances and find indexes 
     index=np.argsort(dist) 
#pick the kth closest indexes 
     knearest=index[1:k] 
#find the count of 1's and 0's in the binary class variable 
#if count of 1 is more than count of 0 predict class 1 else class 0 
     if sum(e==0) > sum(e==1): 
      preclassQ=0; 
     else: 
      preclassQ=1; 
     return preclassQ 

首先,我想知道,是有必要包含声明

from numpy import * 
函数定义

,但我们打算给它在IPython中命令行 ?

我救了这个代码knn.py,然后导入它的命令行和调用的函数如下:

In [58]: import knn 

In [59]: knn.knn(b,a,1,[(0),(0),(1),(1)]) 

但功能不执行,我得到一个错误如下:

--------------------------------------------------------------------------- 
NameError         Traceback (most recent call last) 

/Project/<ipython console> in <module>() 

/Project/knn.py in knn(Q, R, k, classvar) 
    14   dist = np.apply_along_axis(np.linalg.norm, 1, R-Q) 
    15 #sort distances and find indexes 

---> 16   index=np.argsort(dist) 
    17 #pick the kth closest indexes 

    18   knearest=index[1:k] 

NameError: global name 'numpy' is not defined 

回答

1

由于您致电np.some_function您不必使用from numpy import *

函数的局部定义必须与全局定义冲突,所以尽量运动import numpy里面的功能:

def knn(Q, R, k, classvar): 
    import numpy as np 

如果它不工作,什么地方必须使用numpy.some_function代替np.some_function。 ..

0

之前导入包 'numpy的'

import numpy as np 

你可以定义NP为g叶形

global np 

代码将是这样的

global np 
import numpy as np 

def foo(): 
    np.seterr(divide = 'ignore') 

这个工作对我来说,可能会为你工作,以及!