Python:我需要创建一个具有特定规范的随机NxN矩阵

Python:我需要创建一个具有特定规范的随机NxN矩阵,python,function,matrix,Python,Function,Matrix,我正在做一道数学作业,这道题给我带来了一些麻烦。我需要编写一个python函数来创建一个随机矩阵,以便: 矩阵是NxN 每个非对角输入(请尝试以下代码: def randmat(n): matrix = np.ndarray((n,n), dtype=float) for i in range(n): for j in range(n): if i != j: matrix[i,j] = np.random

我正在做一道数学作业,这道题给我带来了一些麻烦。我需要编写一个python函数来创建一个随机矩阵,以便:

  • 矩阵是NxN

  • 每个非对角输入(请尝试以下代码:

    def randmat(n):
        matrix = np.ndarray((n,n), dtype=float)
        for i in range(n):
            for j in range(n):
                if i != j:
                    matrix[i,j] = np.random.rand(1)
                else:
                    matrix[i,j] = n + np.random.rand(1)
        return matrix
    

    如果使用的是
    numpy
    ,则可以通过两种方式访问矩阵元素:
    matrix[i][j]
    matrix[i,j]

    另外,在
    for
    循环中,您试图从
    范围
    中获取两个值,这实际上只产生一个值。因此,您不能像这样使用
    i
    j
    进行循环

    我会为你的问题提出以下解决方案

    def randmat(n):
        matrix = np.random.rand(n, n)
        for i in range(n):
            matrix[i, i] = n + np.random.rand(1)
        return matrix
    
    numpy.random.rand
    是一个很好的函数,它为您提供所需形状的矩阵和元素,这些元素随机分布在0和1之间。以下是文档:

    然后,您只需迭代一次并更改主对角线上的元素


    希望这将有助于

    对于多维numpy数组,您可以使用
    matrix[i][j]
    而不是
    matrix[ij]
    访问元素,因此我遇到了一些问题什么问题?请参阅。