python 将specificvalue设置为numpy数组中的值范围

omqzjyyz  于 2023-01-04  发布在  Python
关注(0)|答案(1)|浏览(233)

我试图设置数组(图像)中的值,目标是所有值与0被设置到一定范围,并在有另一个值不同于0被调整到另一个范围,我有一个解决方案,但它是非常缓慢的,我想优化它,如下:

list_heatmap = [[np.random.randint(20, 120) if i == 0 else np.random.randint(160, 250)
                 for i in row]
                 for row in binary_image]
range_image = np.array(list_heatmap).astype('uint8')

另外,我尝试了np.where(),但是,当我尝试设置值时,它只应用选定范围中的一个,即它将所有0更改为100。
我留下一个一维数组的例子作为我尝试的例子。

input = [0,0,0,1,1,0,1]

output = [20,100,75,180,195,37,207]
bvuwiixz

bvuwiixz1#

您可以创建一个随机数数组,其大小与您在np中使用的输入相同。其中:

import numpy as np

arr = np.array([0,0,0,1,1,0,1])

rand_if_true = np.random.randint(20, 120, size=arr.shape)
rand_if_false = np.random.randint(160, 250, size=arr.shape)

out = np.where(arr == 0, rand_if_true, rand_if_false)

输出:

array([100,  95,  35, 227, 247,  63, 242])

相关问题