2012-08-03 59 views
3

我不知道導入模塊的正確方法。將Numpy導入函數

我有一個初始化代碼的主文件,做了一些初步計算等。 我也有5個函數f1,f2,... f5。主代碼和所有功能需要Numpy。

如果我在主文件中定義所有函數,代碼運行良好。 (與導入:import numpy as np

如果我把功能在一個單獨的文件,我得到一個錯誤:
Error : Global name 'linalg' is not defined.

什麼是導入模塊,使得函數f1的正確方法 - F5可以訪問Numpy功能?

+0

在每個文件的開頭導入numpy,如果它已經被導入一次,它將不會再導入,但是您將擁有要使用的名稱空間。 – Josiah 2012-08-03 03:42:31

回答

3

正如其他答案所說,您需要將numpy導入到每個調用Numpy函數的文件中。但是,如果您不在主模塊中使用它,則無需將其導入主模塊。這是一個簡單的例子。想象一下,你有你的功能的文件叫myFunc.py myFunc.py:

import numpy as np 

def f1(a): # a is a numpy multidimensional array 
    z = np.array(a) 
    flat = z.ravel() 
    flat = flat.tolist() 

    return flat  

然後在你的主文件,你可以做這樣的事情

import myFunc as mf 

mf.f1([[4,67,8],[7,9,7]]) 

你的輸出將是:

[4, 67, 8, 7, 9, 7] 

因此,您將一個列表傳遞給您的函數,將它轉換爲函數中的一個numpy數組,然後將答案作爲列表返回。如果你返回一個numpy數組,你會得到一個錯誤。

0

您必須在每個使用它們的文件中導入模塊。這是否回答你的問題?

+0

是的。我認爲這是重複的,正確的方法是隻導入一次。謝謝。 – Garnet 2012-08-03 03:46:16