我想通过线性求解(A,b)解线性矩阵方程或线性标量方程组scipy.org网站. 具体来说,我有两个字典,dict1和dict1,为了使用上面的脚本,我需要将它们转换成矩阵。你知道吗
food = ['fruits', 'vegetables', 'bread', 'meat']
frequency = ['daily', 'rarely']
consumptions = {'fruits': {'daily': 6, 'rarely': 4}, 'vegetables': {'daily': 8, 'rarely': 6}, 'bread': {'daily': 2, 'rarely': 1}, 'meat': {'daily': 2, 'rarely': 1}}
dict1 = {}
for f in food: #type of food
for j in food:
dict2 = {}
total = 0.
for q in frequency:
dict2.update({q:(consumptions.get(j).get(q)*consumptions.get(f).get(q))})
key = f+'v'+j #comparing the different foods
dict1.update({key:dict2})
这给了我:
{'breadvbread': {'daily': 4, 'rarely': 1},
'breadvfruits': {'daily': 12, 'rarely': 4},
'breadvmeat': {'daily': 4, 'rarely': 1},
'breadvvegetables': {'daily': 16, 'rarely': 6},
'fruitsvbread': {'daily': 12, 'rarely': 4},
'fruitsvfruits': {'daily': 36, 'rarely': 16},
'fruitsvmeat': {'daily': 12, 'rarely': 4},
'fruitsvvegetables': {'daily': 48, 'rarely': 24},
'meatvbread': {'daily': 4, 'rarely': 1},
'meatvfruits': {'daily': 12, 'rarely': 4},
'meatvmeat': {'daily': 4, 'rarely': 1},
'meatvvegetables': {'daily': 16, 'rarely': 6},
'vegetablesvbread': {'daily': 16, 'rarely': 6},
'vegetablesvfruits': {'daily': 48, 'rarely': 24},
'vegetablesvmeat': {'daily': 16, 'rarely': 6},
'vegetablesvvegetables': {'daily': 64, 'rarely': 36}}
我想把它转换成一个4×4的矩阵,因为我用的是4种食物。我没有把dict2当我知道如何转换成一个矩阵与一个字典,我可以做其他,但如果你需要它,我可以更新。你知道吗
我是Python新手,想玩玩字典和矩阵解算器:)。使用数组很容易做到,但是现在我想看看如果我有字典怎么做。你知道吗
可以使用列表理解从字典创建numpy数组:
这将为您提供:
这是一个4x2阵列:
然后,要分别获得
daily
值和rarely
值的4x4矩阵,请使用numpy的高级切片。 与Python列表不同,numpy数组可以同时在多个维度上进行切片。这是通过将一个切片对象(例如:3:,0,:)放置在数组每个维度的方括号内,用逗号分隔来完成的。 我们的数组A
有三个维度:第三个维度表示值是“每日”(0)还是“很少”(1)。所以要得到所有的每日值,我们需要所有的行(:),所有的列(:),并且只需要第三维中的第一个条目(0)。使用numpy的高级切片,我们只需用逗号分隔每个维度所需的切片:
如果要使这些值的含义更明确,可以将numpy数组转换为数据帧:
有关高级切片的详细信息,请参见http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#advanced-indexing。你知道吗
相关问题 更多 >
编程相关推荐