我想知道如何使用python 2.6.6和numpy 1.5.0版本用零填充2D numpy数组.抱歉! 但这些是我的局限.所以我不能用np.pad.例如,我想a用零填充,使其形状匹配b.我之所以这样做是因为我能做到:
b-a
Run Code Online (Sandbox Code Playgroud)
这样的
>>> a
array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]])
>>> b
array([[ 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3.]])
>>> c
array([[1, 1, 1, 1, 1, 0],
[1, 1, 1, 1, 1, 0],
[1, 1, 1, …Run Code Online (Sandbox Code Playgroud) 让
a = np.array([[1, 2], [3, 4]])
a
array([[1, 2],
[3, 4]])
Run Code Online (Sandbox Code Playgroud)
然后使用 resize
b = np.resize(a, (3, 3))
b
array([[1, 2, 3],
[4, 1, 2],
[3, 4, 1]])
Run Code Online (Sandbox Code Playgroud)
b现在a以不稳定的顺序拥有来自if 的所有信息。有没有办法利用它来创建左上角看起来像 a 但现在有一个新列和一个新行的 np.nan ?
c = np.empty(b.shape)
c.fill(np.nan)
c[:a.shape[0], :a.shape[1]] = a
c
array([[ 1., 2., nan],
[ 3., 4., nan],
[ nan, nan, nan]])
Run Code Online (Sandbox Code Playgroud)
显然,上面的代码完成了同样的事情。我不禁认为resize可以以某种方式使用它来更有效地完成此任务。
有没有办法“扩展”数组并重复最后一个元素来填充扩展?
另一篇文章讨论了扩展和填充,0但我希望重复最后一个值作为填充。
假设我有一个数组:
[[1, 2],
[3, 4],
[0, 0]]
Run Code Online (Sandbox Code Playgroud)
我需要插入[5, 6, 6]来替换[0, 0],显然 NumPy 不允许这样做。但我可以重塑/扩展为:
[[1, 2, 2],
[3, 4, 4],
[5, 6, 6]]
Run Code Online (Sandbox Code Playgroud)
我正在读取一个文件,其中值的数量长度可能有所不同,但我需要数组具有相同的形状。执行此操作的一种方法是首先读取文件并找到最大长度,然后再次读取并填充,但该文件有 10GB 以上,因此我更愿意通过“扩展”并重复回填来一次性完成此操作。