【发布时间】:2017-01-26 17:57:05
【问题描述】:
假设有两个二维数组,a 和 b
import numpy as np
a = np.random.rand(3, 4)
b = np.random.zeros(8, 8)
并且b 在两个轴上总是大于a。
(编辑:b 被初始化为一个零数组,以反映所有未被a 占用的元素将保持为零。)
问题。将a“插入”到b 中的最快或最Pythonic方式是什么?
到目前为止,我已经尝试了 2 件事:
- 使用
np.pad将a“转”成形状数组(8, 8) - 遍历
a中的每一行并将其放置在b中的相应行中
我没有尝试的是使用双重嵌套循环来迭代 a 的每个元素,因为我认为这对性能不友好。
动机。每个数组a 都是一个小字符,我想将每个字符提供给一个接受扁平 形状(8, 8) 数组的神经网络,即。形状为(64,) 的数组。 (我认为我不能简单地将a 扁平化为一维并用零填充它,因为这样它的二维结构就会扭曲,所以我必须首先将其“重塑”为@ 987654340@,对吗?)有几百万个字符。
【问题讨论】:
-
您在最后一段中提到了用零填充,但在示例中您使用随机值呈现
b。那么你需要什么:a用来自b的值填充,或者用零填充?填充在右边和底部吗? -
“插入”是什么意思?
-
为什么不
b[?:?, ?:?] = a?那就是将b的匹配块切片作为放置a的地方 -
您想在 b 的中心或角落或其他地方插入 a 吗?你用 0 填充其他元素还是保持不变?你能举一个 a 和 b 以及结果数组的例子吗?
-
@trincot 哎呀,
b实际上应该是np.zeros。此外,理想情况下,内边距应该居中,但左上角也不错。