我有一个数据矩阵(106行和57列),其中所有数据都是['a','c','g','t']
,每列也有1个字典。我需要做的是根据自己的字典对每列应用转换。
我试过这样的事,但结果不正确。
result = []
for x in range(data.shape[0]):
individual_map = np.empty(data.shape[1], dtype=int)
for y in range(data.shape[1]):
for key, val in mapping[y].items():
individual_map[data[x,y] == key] = val
result.append(individual_map)
感谢。
编辑:示例数据只有3列,所以我只有3个词典。在实际案例中,有57列和57个词典。 样本数据:
data = [['a','c','g'],['t','g','c']]
dictionaries = [{'a':1,'c':2,'g':3,'t':4},{'a':3,'c':1,'g':2,'t':4},{'a':2,'c':3,'g':4,'t':1}]
result = [[1,1,4],[4,2,3]]
答案 0 :(得分:3)
如果有,
data = [['a','c','g'],['t','g','c']]
dictionaries = [{'a':1,'c':2,'g':3,'t':4},{'a':3,'c':1,'g':2,'t':4},{'a':2,'c':3,'g':4,'t':1}]
,预期结果是
result = [[1,1,4],[4,2,3]]
你可以通过两个嵌套列表推导(https://docs.python.org/2/tutorial/datastructures.html)得到它:
result = [[dictionaries[j][item] for j, item in enumerate(row)] for row in data]
答案 1 :(得分:0)
def data():
data = [['a','c','g'],['t','g','c']]
dictionaries = [{'a':1,'c':2,'g':3,'t':4},{'a':3,'c':1,'g':2,'t':4},{'a':2,'c':3,'g':4,'t':1}]
result = []
for row in range(0, len(data)):
temp = [0]* len(data[0])
for col in range(0, len(data[0])):
temp[col] = (dictionaries[col])[data[row][col]]
result.append(temp)
print result
使用row,col遍历2D数组。使用col循环变量来获取所需的字典,并通过使用row和col来获取数据值。