我正在尝试创建一个 100 x 100 矩阵,该矩阵将填充 1 和 -1(随机),并且矩阵的对角线应该全为零。
我是 python 和 numpy 的新手。
用一个创建矩阵:
a = numpy.ones( (100,100) )
创建随机矩阵:
a = numpy.random.random( (100,100) ) # by default between zero and one
要将所有对角线设置为零:
numpy.fill_diagonal(a, 0)
这是一个简单的 python 行来创建一个 2D 矩阵 - 100X100:
yourmatrix = [[0 for x in xrange(100)] for x in xrange(100)]
作为替代方案,仅使用列表理解和随机:
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)]