我有一个带有因子和X和Y坐标的数据透视表数组,如下面的那个,我有一个64色的查找表,它有RGB值。我已经使用元组字典为每个因子组合分配了一种颜色,但我很难弄清楚如何比较我的dictonary的键(这是不同的因素组合)和我的数组,以便每行可以为该因子组合分配字典中给出的颜色。
这是数据透视表的一个例子:
A B C D Xpoint Ypoint
0 1 0 0 20 20
0 1 1 0 30 30
0 1 0 0 40 40
1 0 1 0 50 50
1 0 1 0 60 60
编辑:这是LUT的一个例子:
R G B
0 0 0
1 0 103
0 21 68
95 173 58
这是一个字典的例子:
{
(0, 1, 0, 0): (1, 0, 103),
(0, 1, 1, 0): (12, 76, 161),
(1, 0, 1, 0): (0, 0, 0)
}
这是我使用过的代码:
import numpy as np
from PIL import Image, ImageDraw
## load in LUT of 64 colours ##
LUT = np.loadtxt('LUT64.csv', skiprows=1, delimiter=',')
print LUT
## load in XY COordinates ##
PivotTable = np.loadtxt('PivotTable_2017-07-13_001.txt', skiprows=1, delimiter='\t')
print PivotTable
## Bring in image ##
IM = Image.open("mothTest.tif")
#bring in number of factors
numFactors = 4
#assign colour vectors to factor combos
iterColours = iter(LUT)
colour_dict = dict() # size will tell you how many colours will be used
for entry in PivotTable:
key = tuple(entry[0:numBiomarkers])
if key not in colour_dict:
colour_dict[key] = next(iterColours)
print(colour_dict)
有没有办法将此字典中的元组与数据透视表数组中的行进行比较,或者可能有更好的方法来执行此操作?任何帮助将不胜感激!
答案 0 :(得分:2)
如果我的目标是,正如我在上面的评论中所假设的那样,追溯到ntuple的颜色,那么你已经做了所有事情。但我不知道tif文件扮演的角色...请注意我更正了对不存在的NumBiomarkers变量的引用...
import numpy as np
from PIL import Image, ImageDraw
## load in LUT of 64 colours ##
LUT = np.loadtxt('LUT64.csv', skiprows=1, delimiter=',')
print LUT
## load in XY COordinates ##
PivotTable = np.loadtxt('PivotTable_2017-07-13_001.txt', skiprows=1, delimiter=',')
print PivotTable
## Bring in image ##
IM = Image.open("Lenna.tif")
#bring in number of factors
numFactors = 4
#assign colour vectors to factor combos
iterColours = iter(LUT)
colour_dict = dict() # size will tell you how many colours will be used
for entry in PivotTable:
key = tuple(entry[0:numFactors])
if key not in colour_dict:
colour_dict[key] = next(iterColours)
print(colour_dict)
print '===='
for entry in PivotTable:
key = tuple(entry[0:numFactors])
print str(entry) + ' ' + str(colour_dict[key])
答案 1 :(得分:0)
你能为LUT64.csv添加一个简短的例子,PivotTable_2017-07-13_001.txt吗?也许对于这个,您还应该使用与\ t不同的分隔符,以确保示例的可移植性。
此致