在另一个1d数组中插入一个numpy多维数组

时间:2017-01-01 21:57:52

标签: python arrays numpy

我已经拥有一个形状为(1,224,224)的阵列,一个单通道图像。我想将其改为(1,1,224,224)。我一直在尝试

newarr.shape
#(1,224,224)
arr = np.array([])
np.append(arr, newarr, 1)

我总是这样 IndexError:轴1超出范围[0,1)。如果我将轴移除为0,则数组变平。我做错了什么?

2 个答案:

答案 0 :(得分:1)

尺寸为1是任意的,所以听起来你想简单地重塑数组。这可以通过以下方式实现:

newarr.shape = (1, 1, 244, 244)

newarr = newarr[None]

答案 1 :(得分:0)

insert转换为更高维数组的唯一方法是

bigger_arr = np.zeros((1, 1, 224, 224))
bigger_arr[0,...] = arr

换句话说,创建一个正确大小的目标数组,然后分配值。

np.append是一个诱杀陷阱。避免它。

偶尔这是一种有用的思考方式。但是,将此视为reshape问题会更简单,更快捷。

bigger_arr = arr.reshape(1,1,224,224)
bigger_arr = arr[np.newaxis,...]
arr.shape = (1,1,224,224)   # a picky inplace change
bigger_arr = np.expand_dims(arr, 0)

最后一个

a.reshape(shape[:axis] + (1,) + a.shape[axis:])

提供了如何以编程方式处理维度的想法。