Python scipy.ndimage.generic_过滤器1D不工作
我第一次尝试使用scipy.ndimage.generic_filter1d,但进展不太顺利。这就是我要尝试的Python scipy.ndimage.generic_过滤器1D不工作,python,scipy,scipy.ndimage,Python,Scipy,Scipy.ndimage,我第一次尝试使用scipy.ndimage.generic_filter1d,但进展不太顺利。这就是我要尝试的 import numpy as np from scipy.ndimage import generic_filter1d def test(x): return x.sum() im_cube = np.zeros((100,100,100)) calc = generic_filter1d(im_cube, test, filter_size=5, axis=2) 但
import numpy as np
from scipy.ndimage import generic_filter1d
def test(x):
return x.sum()
im_cube = np.zeros((100,100,100))
calc = generic_filter1d(im_cube, test, filter_size=5, axis=2)
但我得到了这个错误:
TypeError: test() takes 1 positional argument but 2 were given
我正在使用scipy 1.4.1,我做错了什么
对于函数,我也尝试了np.mean,但我得到了以下结果:
TypeError: only integer scalar arrays can be converted to a scalar index
根据,回调接受两个参数:对输入行的引用和对输出行的引用。它不返回输出,而是就地修改提供的缓冲区
如果您想要实现一个滚动和过滤器,您将需要手动完成。例如:
def test(x, out)
out[:] = np.lib.stride_tricks.as_strided(x, strides=x.strides * 2, shape=(5, x.size - 4)).sum(axis=0)
要使其成为平均值,请在末尾添加/5
genetic_filter1d
的目的是格式化边并运行外循环。它实际上并没有为您实现滚动过滤器。您仍然需要自己实现整个内部循环。好的,是的,这一定是问题所在。但我仍然对如何传递正确的论点感到困惑。你知道吗?