从矩阵创建随机数组

时间:2018-11-28 06:22:22

标签: python arrays

我有以下代码用于从矩阵返回数组,但是它不起作用。我想知道您是否可以帮助我进行更正。谢谢你。

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)]

2 个答案:

答案 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())