我正在尝试创建一个系统来获取范围从 0.0 到 1.0 的浮点数组,并根据查找表将它们转换为 RGBA 值。输出应该是一个比输入大一维的数组,最后一个维度的大小为 4 并且由 RGBA 值组成。
目前我只能通过循环来做到这一点。有人知道 numpy 索引方法可以更有效地实现相同的结果吗?
import numpy as np
import matplotlib.pyplot as plt
cyan = np.array([(x*0,x*1,x*1,255) for x in range(256)])
input_array = np.arange(0,0.8,0.05).reshape(4,4)
input_array = input_array*256
colour_array = []
for x in range(input_array.shape[0]):
for y in range(input_array.shape[1]):
colour_array.append(cyan[int(input_array[x,y])])
colour_array = np.array(colour_array).reshape(4,4,4)
plt.imshow(colour_array)
使用以下内容:
index = input_array[*np.indices(shape).reshape(2, -1)].astype(int)
colour_array = cyan[index].reshape(4, *shape)