关于在for循环中使用numpy append函数的查询
关于在for循环中使用numpy append函数的查询
我在将一个numpy数组附加到另一个数组时遇到困难..
data_X = load_dataset() print(data_X.shape) # (6794, 11) result_array = np.empty((0, 110)) for i in range(0, 1000, 10): arr_1d = data_X[i:i+10].reshape(1, 110) np.append(result_array, arr_1d, axis=0) print(result_array.shape)
不确定我做错了什么.. 没有错误,但result_array
的形状是(0,110)
。请帮忙。
问题的出现原因是numpy的append函数与python的list的append方法有所不同,numpy的append函数不会在原地进行操作,而是返回一个新的对象。因此,在循环中使用numpy的append函数时,需要重新赋值给result_array。
此外,需要注意的是,numpy的append函数效率较低,不建议以这种方式使用。
推荐实现与循环等效的方法包括:
- 使用np.empty进行预分配,然后使用切片赋值
- 将元素追加到列表中,最后使用np.concatenate进行合并
在重新赋值后,问题得到了解决。代码如下:
result_array=np.append(result_array, arr_1d, axis=0)
感谢您的帮助。重新赋值后,问题得到了解决。