Python 基于多个字典转换数据
我有一个数据矩阵(106行57列),其中所有数据都是Python 基于多个字典转换数据,python,numpy,dictionary,Python,Numpy,Dictionary,我有一个数据矩阵(106行57列),其中所有数据都是['a'、'c'、'g'、't'],每列也有一个字典。我需要做的是根据每一列自己的字典为每一列应用一个转换 我试过类似的方法,但结果不正确 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, va
['a'、'c'、'g'、't']
,每列也有一个字典。我需要做的是根据每一列自己的字典为每一列应用一个转换
我试过类似的方法,但结果不正确
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]]
如果有,
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]]
您可以通过两个嵌套的列表理解()来获得它:
使用row,col遍历2D数组。使用col loop变量获取所需的字典,并使用row和col获取数据值。能否显示数据和字典的示例?你得到了什么?你期望得到什么?我想数据不是一个列表,而是一个numpy.array(否则它没有形状),你是对的。我忘了提那件事了。但我没有得到任何类型的错误,结果是唯一错误的。一般建议:考虑熊猫这样的任务。数据帧是一种非常有用的数据结构,适用于许多任务。我认为熊猫的解决方案在几个月后会更好地理解…工作真的很好!我仍然是Python的初学者,所以用一行代码就完成了这项工作,这令人难以置信。事实上,列表理解功能非常强大。快乐编码:-)
result = [[dictionaries[j][item] for j, item in enumerate(row)] for row in data]
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