2

非常に奇妙なものに遭遇したので質問しています。次のメソッドは、スクリプト内から呼び出されると例外をスローします。

def gaussian_blur(self, in_array, size):
    # expand in_array to fit edge of kernel
    padded_array = np.pad(in_array, (10,), 'reflect')
    # build kernel
    x, y = np.mgrid[-size:size + 1, -size:size + 1]
    g = np.exp(-(x**2 / float(size) + y**2 / float(size)))
    g = (g / g.sum()).astype(in_array.dtype)
    # do the Gaussian blur
    return fftconvolve(padded_array, g, mode='valid')


Traceback (most recent call last):
  File "raster_tools/smooth.py", line 130, in <module>
    blurred = ri.gaussian_blur(my_array, 10)
  File "raster_tools/smooth.py", line 80, in gaussian_blur
    padded_array = np.pad(in_array, (10,), 'reflect')
  File "/home/.virtualenvs/geo/local/lib/python2.7/site-packages/numpy/lib/arraypad.py", line 1358, in pad
    kwargs)
  File "/home/.virtualenvs/geo/local/lib/python2.7/site-packages/numpy/lib/shape_base.py", line 91, in apply_along_axis
    res = func1d(arr[tuple(i.tolist())], *args, **kwargs)
TypeError: 'unicode' object is not callable

ipdbを使用してブレークポイントを設定してから呼び出すと

padded_array = np.pad(in_array, (10,), 'reflect') 

(ちなみに、関数内の他のすべてのコード行でも)エラーは発生しません。ipdbPython スクリプトが仮想環境内で呼び出されているため、別のインタープリターを使用していると想像できます。仮想環境の外でコードを実行しても同じ動作になります。

4

0 に答える 0