我想得到一个主对角线为零的随机值矩阵,下面的代码可以处理整数值,但我实际上需要浮点值。
def matriz_custo(n):
numeros = sample(range(35,120+1),(n-1)*n)
c = np.array([numeros[i:i+n] for i in range(0,len(numeros),n)])
np.fill_diagonal(c, 0)
c[0][n-1] = 0
return (c)
所以我试着
def matriz_custo_new(n):
numeros = np.random.uniform(low=27.32, high=37.25, size=(n-1,n))
c = np.array([numeros[i:i+n] for i in range(0,len(numeros),n)])
r = np.arange(n-1)
c[:,r,r] = np.inf
c[0][n-1] = 0
return (c)
然后碰巧创建了一个额外的维度。我想像c [0][0]一样访问它,否则我必须改变我所有的代码。
[编辑]
我现在明白了!:
def matriz_custo_new(n):
numeros = np.random.uniform(low=27.32, high=37.25, size=((n-1)*n,))
c = np.array([numeros[i:i+n] for i in range(0,len(numeros),n)])
r = np.arange(n-1)
c[r,r] = 0
c[0][n-1] = 0
return (c)
2条答案
按热度按时间xtupzzrd1#
您使用的NumPy包中的
fill_diagonal
函数将允许您填充任何数组的对角线,而不管其维数如何。文档here的功能。干杯!
lrl1mhuk2#