def make_uniform(x, y):
large = x if x.shape > y.shape else y
# We return x with large.shape, optionally appending zeros.
n = np.product(large.shape)
return (
np.concatenate(x, np.zeros_like(large))
.ravel()[:n]
.reshape(large.shape)
)
x, y = (make_uniform(x, y),
make_uniform(y, x))
x + y
4条答案
按热度按时间laximzn51#
另一种可能的解决方案使用
numpy.pad
:输出量:
9rbhqvlz2#
只需创建另一个与长数组大小相同的数组,并将短数组的空值填充为零,然后将其与长数组相加。
第一个
请注意,这是假设它们的第一个维度不同,如果有更多的维度与第一个维度不同,那么它将变得稍微复杂一些,因为您必须创建两个新数组,其形状是所有维度的最大值。
kmpatx3s3#
这里有一个可能的解决方案:
all_arrays
sum_arr
输出:
0sgqnhkj4#
跟踪各种维度似乎是症结所在。在这里,我使用Ravel / Slice /Reform来灵活地处理这一点。