我有以下代码用于从矩阵返回数组,但是它不起作用。我想知道您是否可以帮助我进行更正。谢谢你。
import numpy as np
class city:
def __init__(self,A,route):
self.A=A
self.route=route
def distance(self):
A = np.array([[ 0, 10, 20, 30],[10, 0, 25, 20],[20, 25, 0, 15],[30, 20, 15, 0]])
return A
def route(self,A):
route = random.sample(A, len(A[:,0]))
return route
ob=city(route)
print(ob.route)
预期输出:
[(0,1),(1,2),(2,3)]
答案 0 :(得分:0)
您可以选择下一个要访问的随机节点,然后从要访问的节点列表(nodes
中删除所选的节点。
最后根据当前和下一个节点对值创建单元地址。
确保每个节点仅被选择一次(每行每列一个),并且不返回到同一节点(a_ii
)
import numpy as np
import random
class city:
def __init__(self):
self.distance()
def distance(self):
self.A = np.array([[ 0, 10, 20, 30],[10, 0, 25, 20],[20, 25, 0, 15],[30, 20, 15, 0]])
self.B = np.array([[random.randint(0,1) for j in range(self.A.shape[0])] for i in range(self.A.shape[1])])
def route(self):
n=self.B.shape[0]
nodes=list(range(n))
route = [nodes.pop(random.sample(range(n-i),1)[0]) for i in range(n)]
return [(route[i],route[i+1]) for i in range(n-1)]
ob=city()
print(ob.route())
输出:
[(1, 0), (0, 3), (3, 2)]
答案 1 :(得分:0)
将numpy导入为np 随机导入 等级城市: def init (自己): self.distance()
$ pkg-config --with-path=/usr/lib/imagemagick6/pkgconfig/
ob = city() 打印(ob.route())