Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python构建基于不同列表的矩阵_Python - Fatal编程技术网

用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,。。。。谢谢你的帮助。还是不清楚你到底想要什么。请用清晰的期望或预期输出更新您的问题。