如何解决numpy ndarray 对象没有属性追加
我正在为我正在制作的程序而苦苦挣扎,因为我必须将我从循环中获得的值存储在数组中。
我试图做的是创建一个名为 M 的空数组。然后对于循环中计算的每个新值“a”,我使用命令 M.append(a) 将值 a 添加到数组 M。
问题是,python 说这个错误:'numpy.ndarray' 对象没有属性 'append'
我不知道如何解决它。
这是我的代码:
import numpy as np
from matplotlib import pyplot as plt
with open('expFcn0.txt') as f:
M = np.array([])
print(M)
lines = f.readlines()
x = [float(line.split()[0]) for line in lines]
y = [float(line.split()[1]) for line in lines]
for i in range(0,181):
a=np.log(y[i])/x[i]
print(a)
i=i+1
M.append(a)
print(M)
plt.plot(x,y,'r--')
plt.xlabel('Time')
plt.ylabel('Biomass')
plt.title('Exponential Function')
plt.show()
非常感谢!
解决方法
Numpy 数组没有方法append()
。您需要根据 documentation 使用 np.append(array,values)
,或者对于您的情况,使用 np.append(M,a)
。
其他答案说明 numpy 数组没有 .append()
方法并指向 numpy.append
。但是,使用 numpy.append
是不好的做法,因为它每次都会创建一个新数组。更好的解决方案是创建一个 numpy 并在 for
循环期间填充它(参见答案结尾)。
更好的解决方案是利用 numpy 的广播。这是 numpy 的核心功能,也是帮助 numpy 快速运行的原因。
import numpy as np
with open('expFcn0.txt') as f:
lines = f.readlines()
x = np.array([float(line.split()[0]) for line in lines])
y = np.array([float(line.split()[1]) for line in lines])
M = np.log(y) / x
您也可以查看 numpy.loadtxt
将文件直接读入 numpy 数组。
如何在 for
循环中填充 numpy 数组:
import numpy as np
with open('expFcn0.txt') as f:
lines = f.readlines()
x = [float(line.split()[0]) for line in lines]
y = [float(line.split()[1]) for line in lines]
M = np.zeros(181)
for i in range(181):
a = np.log(y[i])/x[i]
print(a)
M[i] = a
,
Numpy 数组没有 append 方法。改用 Numpy append 函数:
M = np.append(M,a)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。