Skip to main content
 首页 » 编程设计

python之将二维数组插入(更大的)二维数组的最快方法

2025年05月04日13落叶

假设有两个二维数组,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 方法是什么?

到目前为止,我已经尝试了两件事:

  1. 使用 np.pad 将 a “转换”为形状为 (8, 8) 的数组
  2. 遍历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