用Python构建基于不同列表的矩阵
我将制作以下矩阵:用Python构建基于不同列表的矩阵,python,Python,我将制作以下矩阵: s= [[s11 s12 s13] [s21 s22 s23] [s31 s32 s33]] 其中,我可以通过以下方式获得矩阵s的每个数组: 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] 因此,当我使用以下内容时: impor
s= [[s11 s12 s13]
[s21 s22 s23]
[s31 s32 s33]]
其中,我可以通过以下方式获得矩阵s的每个数组:
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
这给了我一个错误。我怎样才能解决这个问题?谢谢 这里有一个关于如何操作对角线和非对角线值的提示
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.]]
根据你的回答,当我用ai=[0.1,0.25,0.12]代替ai=1时,我什么也得不到。你能给我一个如何输入列表的提示吗?@Fara你能给我一个输入和输出矩阵的例子,说明你的输出应该是什么样的吗?你可以用这个来更新你的问题。@Fara你想让out矩阵的每个元素都是一个Numpy数组吗?我得到的sii和sij(矩阵s的数组)是:sii=[0.1,0.25,0.12],它们位于矩阵s的对角线上,总共3个,sij=[0.5,0.1,0.2],它们位于s21,s31和s32。这里,s21=s12,s23=s32,。。。。谢谢你的帮助。还是不清楚你到底想要什么。请用清晰的期望或预期输出更新您的问题。