Python numpy.float64';对象不能解释为整数
我在山坡扩散方程上运行这段代码时遇到了一些问题。我不是python代码方面的专家!即使我纠正了一些其他问题,代码也会再次返回“numpy.float64”对象不能解释为整数的问题。你能给我一些解决方案或者代码中的其他错误吗? 这里是代码 提前谢谢 阿尔巴Python numpy.float64';对象不能解释为整数,python,numpy,compiler-errors,floating-point,solution,Python,Numpy,Compiler Errors,Floating Point,Solution,我在山坡扩散方程上运行这段代码时遇到了一些问题。我不是python代码方面的专家!即使我纠正了一些其他问题,代码也会再次返回“numpy.float64”对象不能解释为整数的问题。你能给我一些解决方案或者代码中的其他错误吗? 这里是代码 提前谢谢 阿尔巴 “” 从输入import Callable开始 从mpl_toolkits.mplot3d导入Axes3D 将matplotlib.pyplot作为plt导入 将numpy作为np导入 从matplotlib导入cm 作为pd进口熊猫 导入py
“”
从输入import Callable开始
从mpl_toolkits.mplot3d导入Axes3D
将matplotlib.pyplot作为plt导入
将numpy作为np导入
从matplotlib导入cm
作为pd进口熊猫
导入pyodbc
从notebook.utils导入*
乐趣=可调用[[float],float]
数据=pd.read\u excel('rova\u prof.xlsx')
打印(数据)
x=data.iloc[:,:-1]。值
打印(x)
z=data.iloc[:,-1]。值
打印(z)
def_uuprepare_uu(数据,x,z,method=“linear”):#本例中没有关键字
返回成员_表()
x=np.linspace(x[0],x[-1])
z=np.linspace(z[0],z[-1])
plt.plot(x,z,clip_on=False)
plt.show()
def solve_inplicit_gen(c:float,f:fun,g:fun,首字母:fun,T:float,
a:浮动,
b:浮动,
dt:float,dx:float,th:float=0.5,gen=0):
ddx=dx*dx
lam=c*c*dt/ddx
印刷品(林)
J=((b-a)//dx+1)
N=(T//dt+1)
zac=np.零(J)
对于范围(0,J)内的i:
zac[i]=首字母(a+i*dx)
印刷品(一)
U1=zac
U2=np.零(J)
“返回U”
对于范围(1,n)中的n:
对于范围(1,J-1)内的i:
U2[i]=lam*(U1[i-1]-2*U1[i]+U1[i+1])+U1[i]
U2[0]=f(a)
U2[-1]=g(b)
如果n%gen==0:
产量U1
U1=U2
U2=np.零(J)
a=z[len(z)//2]
b=z[-1]
印刷品(a、b)
D=20e-4
c=D**0.5
初始值=z
f=λx:int(a)
g=λx:int(b)
dx=(b-a)/100
dt=1/(2*c*c)*dx*dx
#dt=10
#滴滴涕=100
T=100*dt
X=np.arange(a,b+dx,dx)
如果x[-1]>b:
x=x[:-1]
Z=np.arange(0,T+dt,dt)
如果z[-1]>T:
z=z[:-1]
plt.plot([X],[Z],label=“初始状态”)
gy=1000
对于年份,枚举中的值(求解实际生成(c,f,g,initial,T,a,b,dt,dx,gen=gy)):
plt.绘图(X,零件,标签=str(年*gy)+“年”)
#plt.show()
#输入()
leg=plt.legend(loc='左下角',shadow=True,fontsize='x-small')
leg.get_frame().set_facecolor(“#00FFCC”)
产品名称(“概要1”)
plt.show()
'''
'''
TypeError回溯(最近一次调用上次)
在里面
24 plt.绘图([X],[Z],label=“初始状态”)
25戈瑞=1000戈瑞
--->26对于年份,枚举中的值(求解实际生成(c,f,g,initial,T,a,b,dt,dx,gen=gy)):
27 plt.绘图(X,零件,标签=str(年份*gy)+“年”)
28#plt.show()
在解算法中生成(c,f,g,initial,T,a,b,dt,dx,th,gen)
18
19
--->20 zac=np.零(J)
范围(0,J)内的i为21:
22 zac[i]=初始值(a+i*dx)
TypeError:“numpy.float64”对象不能解释为整数
'''
您问题中的代码没有正确缩进,这几乎无法理解。请回答您的问题并解决此问题。
'''
from typing import Callable
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
import pandas as pd
import pyodbc
from notebook.utils import *
fun = Callable[[float], float]
data=pd.read_excel('rova_prof.xlsx')
print (data)
x = data.iloc[:, :-1].values
print(x)
z = data.iloc[:,-1].values
print(z)
def __prepare__(data,x,z,method="linear"): # No keywords in this case
return member_table()
x= np.linspace(x[0], x[-1])
z=np.linspace (z[0], z[-1])
plt.plot(x, z, clip_on = False)
plt.show ()
def solve_inplicit_gen(c: float, f: fun, g: fun, initial: fun, T: float,
a: float,
b: float,
dt: float, dx: float, th:float = 0.5, gen=0):
ddx = dx * dx
lam = c * c * dt / ddx
print(lam)
J = ((b - a) // dx + 1)
N = (T // dt + 1)
zac=np.zeros(J)
for i in range (0, J):
zac[i]= initial(a + i * dx)
print (i)
U1 = zac
U2 = np.zeros(J)
'return U'
for n in range(1, N):
for i in range(1, J - 1):
U2[i] = lam * (U1[i - 1] - 2 * U1[i] + U1[i + 1]) + U1[i]
U2[0] = f(a)
U2[-1] = g(b)
if n % gen == 0:
yield U1
U1 = U2
U2 = np.zeros(J)
a = z[len(z) // 2]
b = z[-1]
print(a, b)
D = 20e-4
c = D ** 0.5
initial = z
f = lambda x: int(a)
g = lambda x: int(b)
dx = (b - a) / 100
dt = 1 / (2 * c * c) * dx * dx
#dt = 10
#ddt = 100
T = 100*dt
X = np.arange(a, b + dx, dx)
if x[-1] > b:
x = x[:-1]
Z = np.arange(0, T + dt, dt)
if z[-1] > T:
z = z[:-1]
plt.plot([X],[Z],label="Initial state")
gy = 1000
for year,value in enumerate(solve_inplicit_gen (c, f, g, initial,T, a,b, dt, dx, gen=gy)):
plt.plot(X, part, label=str(year*gy) + " years")
# plt.show()
# input()
leg = plt.legend(loc='lower left', shadow=True, fontsize='x-small')
leg.get_frame().set_facecolor('#00FFCC')
plt.title("Profile 1")
plt.show()
'''
'''
TypeError Traceback (most recent call last)
<ipython-input-6-3ee8690ef980> in <module>
24 plt.plot([X],[Z],label="Initial state")
25 gy = 1000
---> 26 for year,value in enumerate(solve_inplicit_gen (c, f, g, initial,T, a,b, dt, dx, gen=gy)):
27 plt.plot(X, part, label=str(year*gy) + " years")
28 # plt.show()
<ipython-input-5-2f0af14af86b> in solve_inplicit_gen(c, f, g, initial, T, a, b, dt, dx, th, gen)
18
19
---> 20 zac=np.zeros(J)
21 for i in range (0, J):
22 zac[i]= initial(a + i * dx)
TypeError: 'numpy.float64' object cannot be interpreted as an integer
'''