1

我正在尝试创建一个 100 x 100 矩阵,该矩阵将填充 1 和 -1(随机),并且矩阵的对角线应该全为零。

我是 python 和 numpy 的新手。

4

3 回答 3

3

用一个创建矩阵:

a = numpy.ones( (100,100) )

创建随机矩阵:

a = numpy.random.random( (100,100) ) # by default between zero and one

要将所有对角线设置为零:

numpy.fill_diagonal(a, 0)
于 2013-06-21T17:26:17.680 回答
0

这是一个简单的 python 行来创建一个 2D 矩阵 - 100X100:

  yourmatrix = [[0 for x in xrange(100)] for x in xrange(100)]
于 2013-06-21T17:34:04.373 回答
0

作为替代方案,仅使用列表理解和随机:

from random import randint
x = [1,-1]
my_matrix = [[x[randint(0,1)] if i!=j else 0 for i in range(100)] for j in range(100)]

这将为您提供-1和1之间的随机选择,对角线为0。您可以将其嵌入到一个函数中,为您提供一个 NxN 大小的矩阵,如下所示:

from random import randint
def make_matrix(n):
    x = [-1,1]
    return [[x[randint(0,1)] if i!=j else 0 for i in range(n)] for j in range(n)]
于 2013-06-21T17:41:14.180 回答