gpt4 book ai didi

python - 从字典中的值列表创建矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 11:33:30 25 4
gpt4 key购买 nike

我想把下面的字典变成一个矩阵,其中字典的第一个和第二个值是列值和行值。如果矩阵为真,我希望有一个“1”,当它为假时,我想要一个“0”。

{0: [2, 5.0], 1: [6, 7.0], 2: [6, 8.0], 3: [5, 6.0], 4: [1, 5.0], 5: [3, 4.0] ], 6: [4, 5.0]}

期望的输出看起来像这样

        1   2   3   4   5   6   7   8

1 0 0 0 0 1 0 0 0
2 0 0 0 0 1 0 0 0
3 0 0 0 1 0 0 0 0
4 0 0 1 0 1 0 0 0
5 1 1 0 1 0 1 0 0
6 0 0 0 0 1 0 1 1
7 0 0 0 0 0 1 0 0
8 0 0 0 0 0 1 0 0

谢谢堆,任何指针都会很棒!

丹妮尔。

最佳答案

虽然我认为使用@Antimony 的答案作为基础(numpy)可能是可行的方法(至少比这个答案更重要)

N = 8

d = {0: [2, 5.0], 1: [6, 7.0], 2: [6, 8.0], 3: [5, 6.0], 4: [1, 5.0], 5: [3, 4.0], 6: [4, 5.0]}

m = [0] * (N ** 2 + 1)

for x, y in d.values():
m[x + int(y - 1) * N] = 1
m[int(y) + (x - 1) * N] = 1

print " ".ljust(9),
print " ".join(map(str, range(1, N + 1)))
print
for i in range(1, N ** 2 + 1):
if i % N == 1:
print "%d ".ljust(10) % (i / N + 1),
val = m[i]
print "%d " % val,
if not i % N:
print

输出

          1   2   3   4   5   6   7   8

1 0 0 0 0 1 0 0 0
2 0 0 0 0 1 0 0 0
3 0 0 0 1 0 0 0 0
4 0 0 1 0 1 0 0 0
5 1 1 0 1 0 1 0 0
6 0 0 0 0 1 0 1 1
7 0 0 0 0 0 1 0 0
8 0 0 0 0 0 1 0 0

根据@DSM 对@Antimony 的回答的评论,这是一个使用 numpy 的回答:

import numpy
N = 8
m = numpy.zeros((N,N))

d = {0: [2, 5.0], 1: [6, 7.0], 2: [6, 8.0], 3: [5, 6.0], 4: [1, 5.0], 5: [3, 4.0], 6: [4, 5.0]}

for i,j in d.itervalues():
m[i-1,j-1] = 1
m[j-1,i-1] = 1

print " ".ljust(9),
print " ".join(map(str, range(1, N + 1)))
print
for i, line in enumerate(m.tolist()):
print "%s %s" % (("%s".ljust(10) % (i+1)," ".join(map(str, map(int, line)))))

输出

          1   2   3   4   5   6   7   8

1 0 0 0 0 1 0 0 0
2 0 0 0 0 1 0 0 0
3 0 0 0 1 0 0 0 0
4 0 0 1 0 1 0 0 0
5 1 1 0 1 0 1 0 0
6 0 0 0 0 1 0 1 1
7 0 0 0 0 0 1 0 0
8 0 0 0 0 0 1 0 0

关于python - 从字典中的值列表创建矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12015679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com