我试图编写一个代码来划分两个二进制形式的多项式(分别是newdata和proofin)。但是,当我运行代码时,我得到:
IndexError: index 0 is out of bounds for axis 0 with size 0
这是代码:
import numpy as np
def transformation_for_numpy_of_o():
newdata = ("101001")
freshdata = list(newdata)
freshdatapoly = []
for n in freshdata:
if n == 1:
freshdatapoly.append(1.0)
if n == 0:
freshdatapoly.append(0.0)
freshdatapoly = np.array(freshdatapoly)
return freshdatapoly
def transformation_for_numpy_of_proof():
proofin = ("101001")
proofing = list(proofin)
proofpoly = []
for n in proofing:
if n == 1:
proofpoly.append(1.0)
if n == 0:
proofpoly.append(0.0)
proofpoly = np.array(proofpoly)
return proofpoly
def total():
# Based on http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.polydiv.html
o_transformed = transformation_for_numpy_of_o()
proof_transformed = transformation_for_numpy_of_proof()
numer = np.array(o_transformed)
denomin = np.array(proof_transformed)
answer = np.polydiv(numer, denomin)
print (answer)
total()
我是新来的,不明白这个错误。我该怎么解决?
*编辑:按要求完整回溯:
/Users/M/anaconda/envs/Invictus/bin/python/Users/Max/PycharmProjects/1/Origin
Traceback (most recent call last):
File "/Users/M/PycharmProjects/1/Origin", line 49, in <module>
total()
File "/Users/M/PycharmProjects/1/Origin", line 46, in total
answer = np.polydiv(numer, denomin)
File "/Users/M/anaconda/envs/Invictus/lib/python3.5/site-packages/numpy/lib/polynomial.py", line 895, in polydiv
w = u[0] + v[0]
IndexError: index 0 is out of bounds for axis 0 with size 0
Process finished with exit code 1
您正在比较int和string,因此if的值永远不会为True,因此当您
np.array(proofpoly)
时proofpoly
始终为空,这同样适用于freshdatapoly
:更改freshdata和校对:
既然您创建了它们,那么只需将每个int列为一个列表:
现在,当您运行它时,会得到一个结果:
也许我们看不到更多,但目前代码相当于:
如果还有其他可能的值,您仍然可以使用列表比较:
相关问题 更多 >
编程相关推荐