|
|

楼主 |
发表于 2017-2-28 22:58:45
|
显示全部楼层
是这样的,我想的方法是先定义一个b*b(b是支路数,也就是后面非零矩阵数)的空矩阵,矩阵内的元素为随机数,然后定义b个3*3的非零矩阵并进行赋值,用这些非零矩阵依次代替空矩阵中国对角线上的元素,一个元素被一个矩阵代替,其它元素用3*3的全零矩阵代替,这样就形成了一个b*b的阻抗矩阵,其中的每一个元素都是一个矩阵。但是出现了一个问题,以下是我的代码:
import numpy
b = input('请输入支路数:')
b = int(b)
Z = numpy.empty((b,b))
for i in range(b):
a = numpy.empty((3,3))
for j in range(3):
for l in range(3):
print('请输入第',j,'行第',l,'列数据:')
tempt = input('输入:')
a[j][l] = float(tempt)
for k in range(b):
if k == i:
Z[i][k] = a
else:
Z[i][k] = numpy.zeros((3,3))
在执行“ for k in range(b):
if k == i:
Z[i][k] = a”时报错,说是“ValueError: setting an array element with a sequence.”
请问能有什么办法解决这个嘛?我看了一下scipy,好像大部分是讲稀疏矩阵的,其元素还是单个数吧?谢谢大佬 |
|