numpy 中一般填充加法的最快解决方案
Fastest solution for general padded addition in numpy
我需要将 2 个可变大小的 dim 数组相互相加。有很多方法可以做到这一点!
典型尺寸为几千乘以几百(因为这可能会影响缩放比例!)。需要进行数十万次这样的添加。在我的例子中,第一维保证是相同的,但子数组是可变长度的。
工作更小的例子:
a = np.ones(shape=(20,20))
b = np.ones(shape=(20,18))
c = a+b # Expected error
b.resize(a.shape)
c = b+c # This works!
有更快的方法吗?我对上面的其他 pythonic 解决方案很感兴趣,但也对不管复杂性如何真正最快的解决方案感兴趣(这是一种速度最重要的项目,但还不如用 C 编写)。
如果你不介意改变 a
,你可以
a[:, :b.shape[1]] += b
我怀疑这会比填充 b
然后添加更快,但像这样的事情需要用实际数据进行测试。
我需要将 2 个可变大小的 dim 数组相互相加。有很多方法可以做到这一点!
典型尺寸为几千乘以几百(因为这可能会影响缩放比例!)。需要进行数十万次这样的添加。在我的例子中,第一维保证是相同的,但子数组是可变长度的。
工作更小的例子:
a = np.ones(shape=(20,20))
b = np.ones(shape=(20,18))
c = a+b # Expected error
b.resize(a.shape)
c = b+c # This works!
有更快的方法吗?我对上面的其他 pythonic 解决方案很感兴趣,但也对不管复杂性如何真正最快的解决方案感兴趣(这是一种速度最重要的项目,但还不如用 C 编写)。
如果你不介意改变 a
,你可以
a[:, :b.shape[1]] += b
我怀疑这会比填充 b
然后添加更快,但像这样的事情需要用实际数据进行测试。