我将制作以下矩阵:
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
它给了我一个错误。我怎么解决这个问题?谢谢。
答案 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.]]