带有零的 numpy pad 创建 2d 数组而不是所需的 1d

numpy pad with zeros creates 2d array instead of desired 1d

我正在尝试用零填充一维 numpy 数组。

这是我的代码

v = np.random.rand(100, 1)
pad_size = 100
v = np.pad(v, (pad_size, 0), 'constant')

result is 200x101 array, whose last column is [0,0,0,... <v>], (leading 100 zeros), and all 1st 100 columns are zeros.

如何得到我想要的数组

[0,0,0,..0,<v>]

大小 (len(v)+pad_size, 1)?

  1. np.hstack((np.zeros((200, 100)), 你的 v))

  2. np.concatenate((np.zeros((200, 100)), 你的 v), 轴=1)

    这可能是你的愿望:

pad 输出是二维的,因为 pad 输入 是二维的。出于某种原因,您使用 rand 创建了一个二维数组:

v = np.random.rand(100, 1)

如果你想要一个一维数组,你应该制作一个一维数组:

v = np.random.rand(100)

如果您想要一个 1 列的二维数组,那么您使用的 pad 不正确。第二个参数应该是 ((100, 0), (0, 0)):在第一个轴之前填充 100 个元素,在第一个轴之后填充 0 个元素,在第二个轴之前填充 0 个元素,在第二个轴之后填充 0 个元素:

v = np.random.rand(100, 1)
pad_size = 100
v = np.pad(v, ((pad_size, 0), (0, 0)), 'constant')

对于 1 行二维数组,您需要同时调整 rand 调用和 pad 调用:

v = np.random.rand(1, 100)
pad_size = 100
v = np.pad(v, ((0, 0), (pad_size, 0)), 'constant')