调整大小并使用额外维度填充 numpy 数组
resize and pad numpy array with additional dimensions
我有一个形状为 (100,28,28)
的 np 数组
我想把它变成(100,32,32,3)
通过用零填充并添加维度
我尝试了 np.newaxis,结果达到了 (100,28,28,1)
您可以在数组上尝试 resize
函数。这是我试过的代码。
arr = np.ones((100,28,28))
arr.resize((100, 32, 32, 3))
print(arr)
新增项全为0
关于您希望如何完成填充的信息不足,因此我假设一个图像处理设置:
- 在数组的两边填充
- 必须沿新添加的维度复制数组
设置
import numpy as np
N, H, W, C = 100, 28, 28, 3
x = np.ones((N, H, W))
1.填充
# (before, after)
padN = (0, 0)
padH = (2, 2)
padW = (2, 2)
x_pad = np.pad(x, (padN, padH, padW))
assert x_pad.shape == (N + sum(padN), H + sum(padH), W + sum(padW))
2。沿新维度复制
x_newd = np.repeat(x_pad[..., None], repeats=C, axis=-1)
assert x_newd.shape == (*x_pad.shape, C)
assert np.all(x_newd[..., 0] == x_newd[..., 1])
assert np.all(x_newd[..., 1] == x_newd[..., 2])
我有一个形状为 (100,28,28)
我想把它变成(100,32,32,3)
通过用零填充并添加维度
我尝试了 np.newaxis,结果达到了 (100,28,28,1)
您可以在数组上尝试 resize
函数。这是我试过的代码。
arr = np.ones((100,28,28))
arr.resize((100, 32, 32, 3))
print(arr)
新增项全为0
关于您希望如何完成填充的信息不足,因此我假设一个图像处理设置:
- 在数组的两边填充
- 必须沿新添加的维度复制数组
设置
import numpy as np
N, H, W, C = 100, 28, 28, 3
x = np.ones((N, H, W))
1.填充
# (before, after)
padN = (0, 0)
padH = (2, 2)
padW = (2, 2)
x_pad = np.pad(x, (padN, padH, padW))
assert x_pad.shape == (N + sum(padN), H + sum(padH), W + sum(padW))
2。沿新维度复制
x_newd = np.repeat(x_pad[..., None], repeats=C, axis=-1)
assert x_newd.shape == (*x_pad.shape, C)
assert np.all(x_newd[..., 0] == x_newd[..., 1])
assert np.all(x_newd[..., 1] == x_newd[..., 2])