在numpy中重新调整数组形状

3
我有一个大小为5000x32x32x3的numpy数组。数字5000是图像数量,每个图像的宽度和高度都是32x32,有3个颜色通道。
现在我想以一种保留数据的方式创建一个形状为5000x3x32x32的numpy数组。我所说的保留数据是:
  1. 结果数组中应该有5000个数据点
  2. 数组的第二个维度(3)正确确定了颜色通道,即所有第二个维度为0的元素属于红色通道,第二个维度为1的元素属于绿色通道,第二个维度为2的元素属于蓝色通道。
简单地通过np.reshape(data,(5000,3,32,32))进行重塑是不行的,因为它不会保留通道,只是将数据重塑成所需的形状。

1
你有没有看过:numpy.swapaxes https://docs.scipy.org/doc/numpy/reference/generated/numpy.swapaxes.html。通过两个轴的转置应该可以实现。 - Learning is a mess
3
实际上,np.transpose(data, (0,3,1,2)) 应该能够满足你的需求。 - Learning is a mess
@Learningisamess 你应该把它写成一个答案。 - Aaron
今天我决定放弃与Numpy及其形状和表格概念的斗争。尽可能避免直接与它接触(:-)。有时,当我必须使用.data或以numpy格式传递时,一个简单的程序变得混乱。Panda比我更了解它,所以我与它交流并使用to_numpy! - Eduardo Freitas
1个回答

6

我想您正在寻找一种轴的排列方式,numpy.transpose 可以完成这项工作:

data = np.transpose( data, (0, 3, 1, 2))

非常感谢,它帮了我大忙!! - Sarthak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接