【发布时间】:2019-09-16 19:30:20
【问题描述】:
我对 python 很陌生,并且已经阅读了很多关于这个主题的 SO 问题,但是没有一个能满足我的需求。
我最终得到了一个 ndarray:
[[1, 2, 3]
[4, 5, 6]]
现在我想为每个元素(例如[1, 2, 3])使用专门针对该元素的填充来填充。当然,我可以在 for 循环中执行此操作,并将每个结果附加到一个新的 ndarray 中,但是是否有一种更快、更简洁的方法可以一次将其应用于整个 ndarray?
我想它可以像这样工作:
myArray = [[1, 2, 3]
[4, 5, 6]]
paddings = [(1, 2),
(2, 1)]
myArray = np.pad(myArray, paddings, 'constant')
当然这只是输出:
[[0 0 0 0 0 0 0 0 0]
[0 0 1 2 3 0 0 0 0]
[0 0 3 4 5 0 0 0 0]
[0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0]]
这不是我需要的。目标结果是:
[[0 1 2 3 0 0]
[0 0 4 5 6 0]]
如何使用numpy 实现这一目标?
【问题讨论】:
-
你不能有一个包含形状不同元素的 numpy 数组......你必须要么接受你需要有一些填充的默认值,要么回退到 Python 列表列表...您能否就您为什么要这样做提供更多背景信息?根据原因,很可能还有其他解决方案。
-
哦,谢谢您指出这一点!对不起,形状当然是一样的!我给你举了个坏例子!现在要编辑它
-
Err... 6 发生了什么?
-
哈哈纠正了
-
我做了一个小的编辑并添加了一些标签,以便可以回答这个问题的人有机会看到它......同时,如果你能解释一下你的填充旨在为您的示例工作 - 只是您的逻辑的一些基本原理等......它肯定会让某人更容易回答......(例如:我正在这样做,当我提供 X 时,它对我的行执行 Y,因为 Z...)
标签: python python-3.x numpy numpy-ndarray zero-padding