解决Python代码中‘numpy.float64’无append属性报错问题
修复‘numpy.float64’ object has no attribute ‘append’错误
错误原因
你初始化了列表P = []用来存储结果,但在内部循环中,错误地将同一个变量名P赋值为计算得到的浮点数(P = 3.14 / (...)),导致P的类型从列表变成了numpy.float64。后续调用P.append(PwD)时自然报错,因为浮点数对象没有append方法。
修复后的代码
将内部循环里的变量名P改为其他名称(比如p_val),避免覆盖外部的结果列表P:
import math import plotly.express as px import numpy as np import matplotlib.pyplot as plt import pandas as pd import pylab as ax import xlsxwriter FcD = 10.0 RcD = 100000.0 w = 500.0 Lam = 0.002 xeD =2.0 yeD = 1.0 wD = 0.0002 noD = 1*10**(-6) nfD = 1000.0 P = [] TD = [] for i in range(-8, 9, 1): for tD in np.arange(1.0 * 10**(i),9.7 * 10**(i),1.0 * 10**(i)): Pd = [] for j in range(1,11,1): s = j * np.log(2.0) / tD # s is Laplace operator u = s * (1+(Lam * w / (3 * s))**(0.5) * np.tanh((3 * s * w / Lam)**(0.5))) Bo = (s / noD)**(0.5) * np.tanh((s / noD) * (xeD - 1)) Ao = Bo / (RcD * yeD) + u Bf = (Ao)**(0.5) * np.tanh((Ao)**(0.5) * (yeD - wD / 2)) Af = 2 * Bf / FcD + s / nfD # 修改变量名,避免覆盖外部列表P p_val = 3.14 / (FcD * s * (Af)**(0.5) * np.tanh((Af)**(0.5))) Pd.append(p_val) PDd = np.array([Pd]) PD = PDd.flatten() v = np.array([0.0833333, -32.083333, 1279, -15623.667, 84244.1667, -236957.5, 375911.667, -340071.67, 164062.5, -32812.5]) PwD = np.log(2) / tD * np.dot(v, PD) P.append(PwD) # 导出结果到Excel(可选) df = pd.DataFrame({'PwD': P}) df.to_excel('calculation_results.xlsx', index=False, engine='xlsxwriter')
补充说明
修复后,外部的P始终保持列表类型,可以正常调用append方法存储PwD结果。如果需要导出到Excel,可使用示例中的pandasto_excel方法完成操作。
内容的提问来源于stack exchange,提问作者Salam Jabbar
相关产品推荐
相关产品推荐

