2015-07-01 24 views
3

我想使用numpy.mgrid創建兩個網格數組,但我想要一種方法來插入一個變量作爲步驟數。如何在Numpy中添加變量步驟?

沒有可變數量的步驟,使用此代碼預期numpy.mgrid工作:

x, y = np.mgrid[0:1:3j, 0:2:5j] 

不過,我想是這樣的,因爲我不能夠明確說明在我的步數代碼生成,柵格陣列行(值可能變動,由於在我的腳本等工序):

num_x_steps = 3 
num_y_steps = 5 
x, y = np.mgrid[0:1:(num_x_steps)j, 0:2:(num_y_steps)j] #Try convert to complex 

有沒有辦法做到這一點,返回等同於第一種方法的結果?

我試着運行我的3行代碼有和沒有括號,並嘗試了其他修改,但似乎沒有任何工作。

注意:我嘗試閱讀this主題,但我不確定該主題處理的內容是否適用於此問題;我不太明白正在問什麼或者如何回答。 (另外,我嘗試從答案中運行代碼行,並且它返回了一個MemoryError。)如果所述主題確實回答了我的問題,請問有人可以更好地解釋它,以及它是如何應用於我的問題的?

+0

在'mgrid'使用3j'的'是一個符號上的把戲。它在內部檢查切片步驟是否複雜(數學上假想),並且執行一些將其視爲計數而不是通常的「arange」步長的數學運算。 – hpaulj

回答

3

小故障是j括號之後不會轉換爲複數。

In [41]:(1)j 
    File "<ipython-input-41-874f75f848c4>", line 1 
    (1)j 
    ^
    SyntaxError: invalid syntax 

通過1j乘以值將正常工作,而這些行給出x, y相當於你的第一行:

num_x_steps = 3 
num_y_steps = 5 
x, y = np.mgrid[0:1:(num_x_steps * 1j), 0:2:(num_y_steps * 1j)] 
3

我認爲你要找的是將步數轉換爲複數。

num_x_steps = 3 
x_steps = complex(str(num_x_steps) + "j") 

num_y_steps = 5 
y_steps = complex(str(num_y_steps) + "j") 

x, y = np.mgrid[0:1:x_steps, 0:2:y_steps] 
相關問題