【发布时间】:2021-10-02 17:45:15
【问题描述】:
我想沿多个维度重复一个数组,使其与另一个数组的维度相匹配。
例如,让我们把:
import numpy as np
a = np.arange(300)
b = np.zeros((300, 10, 20, 40, 50))
我想扩展a 使其与b 的尺寸相匹配,考虑到可以有任意数量的任意长度的尺寸。
目前,我唯一能做的就是在维度上循环,例如:
c = np.copy(a)
for axis, length in enumerate(b.shape[1:]):
c = np.repeat(c[..., None], length, axis + 1)
但是对于大量维度来说效率相当低......
【问题讨论】:
-
np.tile可以做到,但它也可以重复repeats。但它需要完全匹配,还是broadcasting就足够了?还有一个broadcast_to。 -
问题不仅在于大量的维度,还在于该数组的最终大小。当我测试各种替代方案时(在一台相当普通的机器上),我一直在杀死我的终端。
-
第一个评论请找原issuehere。