如何在python中重塑图像的维度



假设我有训练图像X_train.shape=(32,32,3,1000)。这意味着有1000张图片,每张图片大小为32x32,有3个颜色通道。它是列表的列表形式。我想让它有一个形状(1000,32,32,3)。我知道我可以使用for循环手动将其更改为我想要的形状,但我想知道numpytensorflow中是否有任何功能可以快速轻松地做到这一点?

您可以使用np.moveaxis

import numpy as np
X_train = np.random.rand(32, 32, 3, 1000)
print(X_train.shape)
X_train_new = np.moveaxis(X_train, 3, 0)
print(X_train_new.shape)

这里3为源索引,0为目的索引。

输出
(32, 32, 3, 1000)
(1000, 32, 32, 3)

如果是list的list,首先将其转换为numpy数组或张量:

使用numpy:

X_train = np.array(X_train)
X_train = np.reshape(X_train, (1000, 32, 32, 3))

使用TensorFlow:

X_train = tf.cast(X_train, dtype=tf.float32)
X_train = tf.reshape(X_train, shape=(1000, 32, 32, 3))

您可以使用np.einsum

>>> X_train_new = np.einsum('ijkl->lijk',X_train)
>>> X_train.shape
(32, 32, 3, 1000)
>>> X_train_new.shape
(1000, 32, 32, 3)

相关内容

  • 没有找到相关文章

最新更新