gpt4 book ai didi

python - 使用 lambda 进行 numpy 元素转换?

转载 作者:太空宇宙 更新时间:2023-11-04 10:26:37 25 4
gpt4 key购买 nike

在 3D numpy 数组中,我需要按如下方式转换每个元素:如果小于 0,则必须变为 0,如果大于 255,则必须变为 255,否则保持原样。

我怎样才能用 numpy 实现它?我在想类似的事情

img.transform_each(transform_func)

在哪里

def transform_func(x):
if x<0:
return 0;
# etc

是否有像 transform_each 这样的构建函数?我不知道如何手动进行 for-for-for 循环。

最佳答案

您可以使用 clip将数组的值保持在特定范围内。例如:

>>> a = np.array([-1, 23, 312, 47, -5])
>>> a.clip(0, 255)
array([ 0, 23, 255, 47, 0])

返回一个包含值的相同形状的新数组 - 如果您想使更改永久生效,则需要将 a 重新分配给这个新数组,否则使用 out 执行操作的参数:

np.clip(a, 0, 255, out=a)

另一种为更复杂的操作开辟道路的方法是 bool 索引的思想。

例如,将数组a中小于0的元素设置为0:

a[a < 0] = 0

或者将2的所有值乘以7,你可以这样写:

a[a == 2] *= 7

关于python - 使用 lambda 进行 numpy 元素转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29015556/

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