我正在尝试学习 ndimage,但我不知道generic_filter()函数是如何工作的。文档提到用户功能将应用于用户定义的足迹,但不知何故我无法做到。这是示例:
>>> import numpy as np
>>> from scipy import ndimage
>>> im = np.ones((20, 20)) * np.arange(20)
>>> footprint = np.array([[0,0,1],
... [0,0,0],
... [1,0,0]])
...
>>> def test(x):
... return x * 0.5
...
>>> res = ndimage.generic_filter(im, test, footprint=footprint)
Traceback (most recent call last):
File "<Engine input>", line 1, in <module>
File "C:\Python27\lib\site-packages\scipy\ndimage\filters.py", line 1142, in generic_filter
cval, origins, extra_arguments, extra_keywords)
TypeError: only length-1 arrays can be converted to Python scalars
我希望x
传递给test()
函数的值是每个数组样本的那些真实足迹相邻元素,所以在这个示例中,形状为 (2,) 的数组,但我得到了上述错误。
我究竟做错了什么?
如何告诉通用过滤器对指定的相邻点应用简单的值计算?