2016-04-21 77 views
0

關於numpy中的通用函數 ,我有以下問題。我怎樣才能定義一個通用函數,返回 與numpy內建函數相同類型的numpy數組。 下面的示例代碼:使用frompyfunc創建的python通用函數的數據類型

import numpy as np 
def mysimplefunc(a): 
    return np.sin(a) 
mysimpleufunc = np.frompyfunc(mysimplefunc,1,1) 
a = np.linspace(0.0,1.0,3) 
print(np.sin(a).dtype) 
print(mysimpleufunc(a).dtype) 

結果輸出:

float64 
object 

任何幫助是非常讚賞:)

PS:我使用Python 3.4

回答

0

我找到解決方案 (另請參閱discussion on stackoverflow): 使用vectorize而不是frompyfunc

import numpy as np 
def mysimplefunc(a): 
    return np.sin(a) 
mysimpleufunc = np.vectorize(mysimplefunc) 
a = np.linspace(0.0,1.0,3) 
print(np.sin(a).dtype) 
print(mysimpleufunc(a).dtype) 
+0

我從其他SO討論中知道'frompyfunc'返回了'object'並且速度更快,但沒有意識到它被'vectorize'使用。 vectorize常常被誤用作簡單迭代的替代品。 – hpaulj

相關問題