假设有两个二维数组,a 和 b
import numpy as np
a = np.random.rand(3, 4)
b = np.random.zeros(8, 8)
和b在两个轴上总是大于a。
(编辑:b 被初始化为零数组,以反射(reflect)所有未被 a 占用的元素将保持为零的事实。)
问题。将 a“插入”b 的最快或最 Pythonic 方法是什么?
到目前为止,我已经尝试了两件事:
- 使用
np.pad将a“转换”为形状为(8, 8)的数组 - 遍历
a中的每一行,并将其放入b中的相应行中
我没有尝试的是使用双重嵌套循环遍历 a 的每个元素,因为我认为这对性能不友好。
动机。每个数组 a 都是一个小字符,我想将每个字符提供给接受 flattened 形状数组 (8, 8)< 的神经网络,即。形状为 (64,) 的数组。 (我认为我不能简单地将a展平到一维并用零填充它,因为这样它的二维结构就会变形,所以,我必须首先“reshape"它变成 (8, 8),对吗?)有几百万个字符。
请您参考如下方法:
关于:
b[:a.shape[0],:a.shape[1]] = a
请注意,我假设 a 将放在 b 的开头,但您可以稍微改进一下,将 a 放在任何地方:
a0,a1=1,1
b[a0:a0+a.shape[0],a1:a1+a.shape[1]] = a
