【问题标题】:numpy ndarray object has no attribute appendnumpy ndarray 对象没有附加属性
【发布时间】:2021-01-15 10:13:37
【问题描述】:

我正在努力解决我正在制作的程序,我必须将从循环中获得的值存储在数组中。

我试图做的是创建一个名为 M 的空数组。然后对于在循环中计算的每个新值“a”,我使用命令 M.append(a) 将值 a 添加到数组 M。

问题是,python 说这个错误:'numpy.ndarray' object has no attribute '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 方法,但附加到 numpy 数组不是一个好习惯。您最好创建一个 python 列表并附加到该列表中。如果您想要结果的 numpy 数组,可以从该列表创建一个 numpy 数组。
  • 使用M = []。列表有追加,数组没有。
  • 顺便说一句,如果不是拼写错误,修改索引 i=i+1 不起作用,应该避免在 for 循环中使用。

标签: python numpy loops numpy-ndarray


【解决方案1】:

Numpy 数组没有有一个方法append()。您需要根据documentation 使用np.append(array, values),或者根据您的情况使用np.append(M, a)

【讨论】:

    【解决方案2】:

    其他答案解释了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
    

    【讨论】:

      【解决方案3】:

      Numpy 数组没有 append 方法。改用 Numpy 追加函数:

      M = np.append(M, a)
      

      【讨论】:

        猜你喜欢
        • 2021-12-01
        • 1970-01-01
        • 2015-12-03
        • 2012-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-27
        相关资源
        最近更新 更多