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

2024-05-15 06:24:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  • 矩阵是NxN
  • 每个非对角条目(𝑎𝑖𝑗 哪里𝑖≠𝑗) 是[0,1]中的随机数
  • 斜线条目𝑎𝑖𝑖 是一个随机数[𝑛,𝑛+(一)

这是我到目前为止所掌握的,但我认为我不了解数组的索引,所以我提出了一些问题

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

如果你知道我做错了什么,我们将不胜感激


Tags: 函数defnp作业条目矩阵数学random
2条回答

请尝试以下代码:

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循环中,您试图从range中获取两个值,这实际上只产生一个值。所以不能像这样用ij循环

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

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之间。这是文件:https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.random.rand.html#numpy.random.rand

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

希望这会有所帮助

相关问题 更多 >

    热门问题