2011-11-03 71 views
0

您好,我有Walk1d函數,然後我想計算cumsum。 我使用Walk1d = lambda n:sc.cumsum(steps(n))。結果是一個數組,但是當我嘗試Walk1d.cumsum()時,它不起作用,因爲type(Walk1d)是一個函數。 如果我嘗試sc.array(Walk1d).cumsum()它給我:在0x3798488> 我該如何處理?scipy - 如何將函數結果轉換爲數組

import matplotlib.pyplot as plt 
import scipy as sc 


steps=lambda m: 2*sc.random.random_integers(0,1,size=m)-1 
Walk1d=lambda n: sc.cumsum(steps(n)) 

print(sc.array(Walk1d).cumsum()) 

謝謝!

+3

Woudn't它更加清晰如果你使用普通的函數定義,比如'def steps(m):blah blah'?你的代碼確實充滿了單行程序,但我認爲這在這種情況下或者在Python中一般來說不是一個優點。如果您多行擴展,您的錯誤信息將會清晰(如果有的話),人們會發現更容易幫助您。只是一個想法。 – heltonbiker

+0

我這樣做是因爲它的小程序和定義很小。 – George

+0

@George:沒有什麼能阻止你寫'def steps(m):return 2 * sc.random.random_integers(0,1,size = m)-1'。仍然是一個班輪。 –

回答

1

Walk1d是一個帶參數的函數。你要調用的函數,並傳遞一個參數得到一個結果,例如

print(Walk1d(10).cumsum()) 
+0

是的,你是對的!我錯過了它!然而,它仍然給出。是否有辦法將它轉換爲數組?如果我想從上面的例子中檢索Walk1d [0:3]怎麼可以我那樣做? – George

+0

好吧,我找到了!我叫x = sc.array(Walk1d(10)),然後我做x [1:3] – George

0

Walk1d需要用參數n被調用的函數:

print(sc.array(Walk1d(10)).cumsum()) 
相關問題