我已经拥有一个形状为(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,则数组变平。我做错了什么?
答案 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:])
提供了如何以编程方式处理维度的想法。