numpy.ndarray对象无append属性报错及代码问题求助
解决'numpy.ndarray' object has no attribute 'append'报错
报错原因
你代码里的X_train或y_train在循环开始前已经被定义为numpy数组(ndarray),而numpy数组并没有append()方法——这个方法是Python原生列表(list)的专属方法,调用时自然触发报错。
解决方案
方案1:用列表存储数据,最后转numpy数组(推荐)
先初始化空列表,循环中用列表的append()添加元素,最后一次性转换为numpy数组,这种方式效率更高:
# 初始化空列表 X_train = [] y_train = [] for i in range(60,1259): X_train.append(training_scaled[i-60:i, 0]) y_train.append(training_scaled[i,0]) # 转换为numpy数组 x_train,y_train = np.array(X_train),np.array(y_train)
方案2:使用numpy的np.append()函数
如果必须基于numpy数组操作,要使用numpy提供的np.append()函数,注意维护好数组的维度:
# 提前初始化符合维度要求的空numpy数组 X_train = np.empty((0, 60)) # 每行60个元素,初始0行 y_train = np.empty(0) for i in range(60,1259): # 扩展X_train,需将单个样本转为二维数组后追加 X_train = np.append(X_train, training_scaled[i-60:i, 0].reshape(1, -1), axis=0) # 追加y_train元素 y_train = np.append(y_train, training_scaled[i, 0])
注意:
np.append()每次都会创建新的数组,循环中频繁调用会降低性能,因此优先推荐方案1。
内容的提问来源于stack exchange,提问作者sanjay selvaraj
相关产品推荐
相关产品推荐

