【发布时间】:2016-10-07 04:32:37
【问题描述】:
我有一个不同行大小的 numpy 数组
a = np.array([[1,2,3,4,5],[1,2,3],[1]])
我想把它变成一个密集的(固定的 n x m 大小,没有可变行)矩阵。到目前为止,我尝试过这样的事情
size = (len(a),5)
result = np.zeros(size)
result[[0],[len(a[0])]]=a[0]
但我收到一个错误提示
形状不匹配:形状 (5,) 的值数组无法广播到 形状(1,)的索引结果
我也尝试使用 np.pad 进行填充,但根据 numpy.pad 的文档,我似乎需要在 pad_width 中指定行的先前大小(这是可变的,并且在尝试使用时产生了错误 - 1,0 和最大的行大小)。
我知道我可以按照here 显示的那样为每行填充填充列表,但我需要使用更大的数据数组来做到这一点。
如果有人可以帮助我回答这个问题,我会很高兴知道。
【问题讨论】:
-
该输入的预期输出是什么:
a = np.array([[1,2,3,4,5],[1,2,3],[1]])? -
澄清一下:您没有有一个不同行大小的numpy数组。你所拥有的是一个 numpy 对象数组。每个对象本身就是另一个数组。
-
result[i,:len(a[i])]=a[i]有效。您需要在第二维(:)中使用切片。您的列表数组与列表列表基本相同。您将通过一种或另一种方式迭代这些子列表。 -
感谢您的澄清。我将不得不修复它。
标签: python arrays numpy padding rows