我在numpy中有一个int的二维数组。我正在建立一种基于TrueType字体的ASCI艺术生成器。我有一个问题,我想将一定范围内的所有值更改为字符串。当我确实将一个值更改为字符串时,其余的将中断,因为整个数组中的int是此类替换所必需的。请,如何重新映射数组中的多个范围?谢谢
data = np.array(list(image.getdata()), dtype=object).reshape(30, 30)
n = 255
data[data > n*0.75] = 'a'
data[data > n*0.5] = 0.75
data[data > n*0.25] = 0.5
data[data > 1] = 0.25
答案 0 :(得分:2)
这是@Prune的意思:
data[(n*0.5 <= data) & (data < n*0.75)] = 0.75
data[(n*0.25 <= data) & (data < n*0.5)] = 0.5
data[(data < n*0.25)] = 0.25
data[data > 0.75] = "A"
答案 1 :(得分:1)
两个步骤:
0.75
值。答案 2 :(得分:1)
我通过更改值来解决此问题,然后将其变为Numpy Array
感谢@hpaulj
def number_to_letter(number):
n = 255
if number >= 255*0.75:
return '#'
elif number >= 255*0.5:
return 'O'
elif number >= 255*0.25:
return '+'
elif number >= 1:
return '-'
elif number >= 0:
return ' '
image_data = [number_to_letter(number) for number in image_data]
data = np.array(image_data, dtype=str).reshape(30, 30)