2017-06-06 63 views
0

在我的主文件導入功能時,我有:numpy的包從另一個.py文件

import matplotlib.pyplot as plt 
import seaborn 
import numpy as np 
import time 

import sys 
sys.path.append("C:/.../python check/createsplit") 
import createsplit 

data='MJexample' 
X,Y,N,Ntr=create_training_data(data) 

在那裏我打電話create_training_data功能從createsplit.py文件,該文件是:

import numpy as np 
import scipy.io 

def create_training_data(data_type): 
    """ 
    creates training data 
    """ 
    if data_type=='MJexample': 
     N=300 
     Ntr = 150 
     X=np.linspace(0,1,N) 
     X = np.array([X,X*X,np.linspace(5,10,N),np.sin(X),np.cos(X),np.sin(X)*np.cos(X)]).T 

     fac=40 
     Y=np.array([np.sin(fac*x)*np.cos(fac*x**2) for x in X[:,0]])[:,None] 

     _X=X 
     _Y=Y 
     return _X,_Y,N,Ntr 

但是運行我的原始文件導致錯誤:NameError:全局名稱'np'未定義由於某種原因,我不會rstand。我假設我以錯誤的方式導入函數,但我不明白會出現什麼錯誤。

+1

你想要'X,Y,N,Ntr = createsplit.create_training_data(data)'。 –

回答

1

我認爲這個問題只是因爲錯誤的函數調用而引發。試試

X, Y, N, Ntr = createsplit.create_training_data(data) 

改爲,它應該工作。