我一遍又一遍地绊倒了同样的错误。 我定义了多个功能,但我遇到了这个部分的问题:
a = 50000.0
c = 1.0
def fkt(smatrix, a, c):
y_Dach = [0.] * 93
for i in range(0, 93):
y_Dach[i] = c*( 1.5*(smatrix[i])/a -
0.5*((smatrix[i])/a)**3.0 )
return y_Dach
因此,smatrix是一个包含93个浮点数的列表 - 一维,事实证明我已经尝试回忆它并且函数内已经有print smatrix[0]
和print type(smatrix[0])
的类型 - 它可以作为预期
我的问题是我一直在犯这个错误:
Traceback (most recent call last):
File "bla.py", line 260, in <module>
print anneal(fkt, a, c, bmatrix)
File "bla.py", line 242, in anneal
fkt(smatrix, a, c)
File "bla.py", line 220, in fkt
y_Dach[i] = c*( 1.5*(smatrix[i])/a -
0.5*((smatrix[i])/a)**3.0 )
TypeError: can't multiply sequence by non-int of type 'float'
我真的尝试过我的小编程技巧可以解决的问题,但是我无法摆脱错误,它会不断重现。 为什么我只能用列表中的浮点数来计算?
我对编程很陌生,但我现在尝试了解更多内容。如果不让我知道,我希望我能回答你的要求。
@Anand S Kumar当我通过print smatrix[0]
调用smatrix时它会显示2500.0
,当我print smatrix
时它会显示:
[2500.0, 3500.0, 5500.0, 6500.0, 7500.0, 8500.0, 9500.0, 10500.0,
11500.0, 12500.0, 13500.0, 14500.0, 15500.0, 16500.0,
17500.0, 18500.0, 19500.0, 20500.0, 21500.0, 22500.0, 23500.0, 24500.0,
25500.0, 26500.0, 27500.0, 28500.0, 29500.0, 30500.0, 31500.0, 32500.0,
33500.0, 34500.0, 35500.0, 36500.0, 37500.0, 38500.0, 39500.0, 40500.0,
41500.0, 42500.0, 43500.0, 44500.0, 45500.0, 46500.0, 47500.0, 48500.0,
49500.0, 50500.0, 51500.0, 52500.0, 53500.0, 54500.0, 55500.0, 56500.0,
57500.0, 58500.0, 59500.0, 60500.0, 61500.0, 62500.0, 63500.0, 64500.0,
65500.0, 66500.0, 67500.0, 68500.0, 69500.0, 70500.0, 71500.0, 72500.0,
73500.0, 74500.0, 75500.0, 76500.0, 78500.0, 79500.0, 80500.0, 81500.0,
83500.0, 85500.0, 87500.0, 88500.0, 89500.0, 90500.0, 91500.0, 92500.0,
93500.0, 95500.0, 98500.0, 99500.0, 100500.0, 103500.0, 107500.0]
答案 0 :(得分:2)
你唯一可以&#34;乘以&#34;标量值列表是您早期用于创建行的列表;列表乘以int执行重复串联。没有定义其他列表/标量操作(包括交换元素的顺序:3 * [1, 2, 3]
未定义,与[1, 2, 3] * 3
不同。)
为了在一行上执行1.5*smatrix[i]/a
之类的操作,您需要自己一次执行一个元素:
new_row = []
for v in smatrix[i]:
new_row.append(1.5*v/a)
或使用像numpy
这样的包,它为标量/矩阵/向量操作提供API。
答案 1 :(得分:0)
我总是从像你这样的人那里获得新的灵感。你真的把问题钉在了一起。非常感谢!!!
我按照您的建议使用numpy
使其成功。
y_Dach[i] = np.multiply(c,( np.multiply(1.5,((smatrix[i])/a))
- (np.multiply(0.5,(((smatrix[i])/a)**3.0)))))
让我们看看我如何继续我的代码和未来的问题。我希望我不会很快再碰到一个。 :)