0
我想在參數tiling
向量化以下功能:蟒蛇functools.partial值的參數
def find_tile(x,tiling):
"""
Calculates the index of the closest element of 'tiling' to 'x'.
tiling: array of grid positions
x: variable of the same type as the elements of tiling
"""
return np.argmin(np.linalg.norm(tiling - x, axis=1))
例如,函數的非量化版本可以接受以下參數
tiling = np.array([[i,j] for i in xrange(3) for j in xrange(3)])
x = np.array([1.2, 2.7])
我很感興趣,找到最快的矢量化,這樣x
仍然是一個單一的載體,我可以傳遞參數列表tiling
所以我試圖用一臺發電機定義多個瓦塊:
tilings = (tiling + np.random.uniform(0,1,2) for j in xrange(3))
,然後使用map
和functools.partial
:
map(functools.partial(find_tile, x=x), tilings)
顯然,有一個與x
是一個數組或東西的問題,因爲我得到的錯誤:
Traceback (most recent call last):
File "main.py", line 43, in <module>
inds = map(functools.partial(find_tile, x=x), ts)
TypeError: find_tile() got multiple values for keyword argument 'x'
有人可以向我解釋如何ge在它周圍嗎?
此外,有沒有另一種更快的方式做到這一點(可能重寫的功能find_tile
?)