【问题标题】:how to fix this error 'numpy.ndarray' object has no attribute 'append' in the code below如何修复此错误 'numpy.ndarray' 对象在下面的代码中没有属性 'append'
【发布时间】:2019-09-10 13:23:34
【问题描述】:

返回此错误: 'numpy.ndarray' 对象没有属性 'append'

class1 = np.array([]) #creates 2 empty arrays
class2 = np.array([])

#yhat_tr is a vector(1 column, 100 rows) = numpy.ndarray
for i in yhat_tr: 
  if i < 0:
    class1.append([i]) #insert the iten in the array class1 or class2
  else:
    class2.append([i])

我想在循环内对元素进行评估后立即在 class1 或 class2 数组中插入新的数组元素。 之后,我将尝试将结果打印在具有 2 种颜色的散点图中,我可以在其中直观地识别 class1 和 class2 元素。

【问题讨论】:

  • 只使用列表。为什么需要np.array?例如class1= []
  • append 是一个 python 列表函数。你确定它应该存在于 numpy.ndarray 上吗? pydoc numpy.ndarray 可能会有所帮助。
  • append 方法适用于 Python 列表,而不适用于 numpy 数组。
  • @RafaelC,我必须用它做一些数学运算,比如乘以另一个数组。

标签: python numpy append


【解决方案1】:

您可以使用 NumPy 模块的 append() 方法添加一个 NumPy 数组元素。

append的语法如下:

numpy.append(array, value, axis)

这些值将附加在数组的末尾,并返回一个新的 ndarray,其中包含新旧值,如上所示。

轴是一个可选的整数,它定义了数组的显示方式。如果不指定轴,则数组结构将被展平

【讨论】:

  • 不要使用np.append。它只是 np.concatenate 的一个名字不好的封面,并且经常被滥用。使用列表和列表追加更好。
【解决方案2】:

快速查看documentation 表明np.ndarray 对象没有函数append,它是np 本身的函数:

class1 = np.append(class1, [i])

【讨论】:

    【解决方案3】:

    正如@Alex 提到的,numpy 数组没有 append 方法。您可以使用他的建议来使用 numpy append 方法,或者您可能希望将类变量定义为列表并使用 append 并在循环后将它们转换为数组,如下面的代码所示。

    class1 = []
    class2 = []
    
    #yhat_tr is a vector(1 column, 100 rows) = numpy.ndarray
    for i in yhat_tr: 
      if i < 0:
        class1.append([i]) #insert the iten in the array class1 or class2
      else:
        class2.append([i])
    
    class1 = np.array(class1)
    class2 = np.array(class2)
    

    【讨论】:

      【解决方案4】:

      喜欢著名的 Stackoverflow 充满了评判性的海报。这一点也不比 Facebook 好多少。

      你需要升级你的游戏。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-09
        • 2020-12-08
        • 1970-01-01
        • 2017-08-14
        • 1970-01-01
        • 2020-12-29
        相关资源
        最近更新 更多