python - 基于另一种阵列形状的零焊盘阵列

标签 python numpy zero-padding

我有 K 个特征向量,它们都共享维度 n 但具有可变维度 m (n x m)。他们都生活在一个列表中。

to_be_padded = []

to_be_padded.append(np.reshape(np.arange(9),(3,3)))

array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

to_be_padded.append(np.reshape(np.arange(18),(3,6)))

array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17]])

to_be_padded.append(np.reshape(np.arange(15),(3,5)))

array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

我正在寻找的是一种对这些 np.arrays 的行进行零填充的智能方法,以便它们共享相同的维度 m。我试过用 np.pad 解决它,但我还没有想出一个漂亮的解决方案。任何朝着正确方向的帮助或插入将不胜感激!

结果应该使数组看起来像这样:
array([[0, 1, 2, 0, 0, 0],
       [3, 4, 5, 0, 0, 0],
       [6, 7, 8, 0, 0, 0]])

array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17]])

array([[ 0,  1,  2,  3,  4, 0],
       [ 5,  6,  7,  8,  9, 0],
       [10, 11, 12, 13, 14, 0]])

最佳答案

您可以使用 np.pad 为此,它也可以垫 2-D使用指定填充宽度的值元组的数组,((top, bottom), (left, right)) .为此,您可以定义:

def pad_to_length(x, m):
    return np.pad(x,((0, 0), (0, m - x.shape[1])), mode = 'constant')

用法

您可以先找到 ndarray列数最多。假设你有两个,ab :
a = np.array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

b = np.array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

m = max(i.shape[1] for i in [a,b])
# 5

然后用这个参数来填充ndarrays :
pad_to_length(a, m)
array([[0, 1, 2, 0, 0],
       [3, 4, 5, 0, 0],
       [6, 7, 8, 0, 0]])

关于python - 基于另一种阵列形状的零焊盘阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54591005/

相关文章:

Python - 使用 URL 以二进制模式打开图像

python - 抓取和解析多页 (aspx) 表

deep-learning - 为什么我们在 PyTorch 中将序列设为 "pack"?

填充为 ='SAME' 的 Tensorflow/Keras Conv2D 层表现异常

python - Scikit 多类分类指标,分类报告

python - 无法在 Windows 中安装 Pylint - python?

python - OSX 通过 brew 为 python3 安装 numpy

python - 当 Numpy 数组只包含上/下三角形中的值时,有没有办法加快它们的计算速度?

python - 为什么我的 numpy 构造忽略元组解构?

java - 我如何在左边填充0?