如何向numpy数组添加新元素

mnemlml8  于 2023-02-19  发布在  其他
关注(0)|答案(2)|浏览(108)

我创建了一个大小为(256,144,3)的数组。

empty_windows = np.empty((256, 144, 3))

然后我想用下面的方法向数组中追加新元素:

for i in range(256):
    for j in range(144):
        empty_windows[i, j] = np.append(empty_windows[i, j], np.asarray(some_new_array)).reshape(3, )

但它不工作,因为我得到错误消息:值错误:无法将大小为6的数组重新整形为形状(3,)
有什么办法吗?谢谢。

xxe27gdn

xxe27gdn1#

我希望,这将有助于您了解级联3dim阵列

import numpy as np
empty_windows = np.empty((256, 144, 3))
random_arr = np.random.randint(0, 100, size=(256, 144, 3)) # it's dimension should be same
np.concatenate([empty_windows, random_arr], axis=2) # it can concatenate into an array axis=2 defines 3rd dimension
f0brbegy

f0brbegy2#

np.emptynp.append是危险的函数,它们不是空列表[]list.append的克隆。

empty_windows = np.empty((256, 144, 3))

已经创建了一个带有浮点值的(256,144,3)形状数组-它们是不可预测的,但很可能不是您想要的。请查看该数组,或一个较小的示例,以便您自己查看。另外,请阅读np.empty docs.np.zeros,如有必要,请重新阅读。
对于标量i,j

empty_windows[i, j]

是(3)形阵列或槽。
当你用另一个(3,)shape对它进行np.append运算时,结果是一个(6,)shape,前3个值是empty_window中的“随机”值,这个错误很清楚地告诉你,它不能把一个(6,)shape数组放到一个只容纳(3,)的插槽中。
您的目标并不明确,但是您不能通过这种“逐行”追加将(n,m,3)形状数组增长到(n,m,6)。
您可以使用新值设置“行”,如下所示:

empty_windows[i, j] = np.asarray(some_new_array)).reshape(3, )

相关问题