关于在for循环中使用numpy append函数的查询

8 浏览
0 Comments

关于在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)。请帮忙。

0
0 Comments

问题的出现原因是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)

感谢您的帮助。重新赋值后,问题得到了解决。

0