【发布时间】:2021-10-27 15:25:44
【问题描述】:
我有一个 (500000,30) numpy 数组,我们可以将其视为长度为 500000 的大小为 30 的向量列表。我想在向量中选择任意 4 个元素,计算其乘积,并存储所有 4 元素乘积。最后我需要计算 500000 个结果的平均值。
我已经用np.einsum 尝试过,但运行速度非常慢。如何提高效率?
# array.shape = (500000,30)
expect = np.sum(np.einsum('ni,nj,nk,nr->ijkr',array,array,array,array),axis=0)/500000
【问题讨论】:
-
请在 5x4 数组上展示基于循环的实现,选择 3 个元素。我看不到您在哪里选择 4 个元素。当散文和代码不匹配时,很难测试实现。
-
一个非常有价值的调试和实现工具是制作一个您可以完全可视化的小示例,即minimal reproducible example。你不能指望我测试一个 500k 长度的数组,但你肯定可以期望我匹配一个 5 长度的数组。
标签: python numpy numpy-einsum