gpt4 book ai didi

python - 列表输出中需要 float

转载 作者:行者123 更新时间:2023-11-30 23:04:56 24 4
gpt4 key购买 nike

我正在尝试创建一个自定义过滤器,以使用 SciPy 包中的通用过滤器来运行它。

scipy.ndimage.filters.generic_filter

问题是我不知道如何使返回值成为标量,因为它需要通用函数才能工作。我通读了这些线程(底部),但我找不到执行函数的方法。

代码是这样的:

import scipy.ndimage as sc

def minimum(window):
list = []
for i in range(window.shape[0]):
window[i] -= min(window)
list.append(window[i])
return list

test = np.ones((10, 10)) * np.arange(10)

result = sc.generic_filter(test, minimum, size=3)

它给出了错误:

cval, origins, extra_arguments, extra_keywords)
TypeError: a float is required

Scipy filter with multi-dimensional (or non-scalar) output

How to apply ndimage.generic_filter()

http://ilovesymposia.com/2014/06/24/a-clever-use-of-scipys-ndimage-generic_filter-for-n-dimensional-image-processing/

最佳答案

如果我理解的话,你想要将每个像素减去其 3 水平邻域的最小值。对列表执行此操作不是一个好习惯,因为 numpy 是为了提高效率(大约快 100 倍)。最简单的方法就是:

test-sc.generic_filter(test, np.min, size=3)

然后对整个数组进行减法向量化。您还可以这样做:

test-np.min([np.roll(test,1),np.roll(test,-1),test],axis=0)

如果您在边境接受了文物,速度会快 10 倍。

关于python - 列表输出中需要 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33431286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com