使用Python构建基于不同列表的矩阵

时间:2017-10-27 15:29:08

标签: python

我将制作以下矩阵:

 s= [[s11 s12 s13]
     [s21 s22 s23]
     [s31 s32 s33]]

我可以通过以下方式获得矩阵的每个数组:

 sii = a(i)  ;  for s11, s22, and s33

 sij = a(i)**2 + 10    ;  for s12=s21, s23=s32, and s13=s31

这里,ai是一个数据列表:

 a = [0.1, 0.25, 0.12]

所以当我使用以下内容时:

import numpy as np 

s = np.ones([3,3])

def matrix(s):
a = [0.1, 0.25, 0.12]
s[np.diag_indices_from(s)] = ai
s[~np.eye(s.shape[0],dtype=bool)] = ai**2 + 10

它给了我一个错误。我怎么解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:1)

以下是关于如何操纵对角线和非对角线值的提示。

import numpy as np

s = np.ones([3,3])

def matrix(s):
    a = [1,2,3]
    for i in range(len(a)):
        s[i,i] = a[i] #  sii = a(i) 
        rc = (i + 1) % len(a)
        val = a[i] ** 2 + 10 
        s[i, rc] = val # sij = a(i)**2 + 10 
        s[rc, i] = val # sij = a(i)**2 + 10 
    return s

print(matrix(s)) 

输入:

[[ 1.  1.  1.]
 [ 1.  1.  1.]
 [ 1.  1.  1.]]

输出:

[[  1.  11.   19.]
 [ 11.   2.  14.]
 [  19.  14.   3.]]