带有广播的numpy数组构造

numpy array construction with broadcasting

我想将具有不同但广播兼容数组的数组堆叠在一起。给定 7x5、7x1、1x5 和 1x1 数组,我想做类似

的事情
 a475 = mkarr([a75, a71, a15, a11])

其中 a455 将是一个 4x7x5 数组。 理想情况下,我也希望能够做到

 a2275 = mkarr([[a75, a71], [a15, a11]])

得到一个 2x2x7x5 的数组。

用numpy表达这些操作最简洁的方式是什么?

您可以使用 np.broadcast_arrays:

a475 = np.stack(np.broadcast_arrays(a75, a71, a15, a11))

请注意,这会创建原始数组的视图,因此不会占用任何额外的内存。