我如何做一个模仿' keepdims'?的einsum?

时间:2017-03-23 17:51:28

标签: python numpy numpy-einsum

一个python问题:我已经在一对3d数组上进行了np.einsum操作:

return np.einsum('ijk, ijk -> ik', input_array, self._beta_array)

我遇到的问题是结果是2d;这次行动摧毁了' j'尺寸。我喜欢做的就是让它保留“j'维度类似于' keepdims'适用于np.sum函数。

我可以将结果包装在np.expand_dims中,但这对我来说似乎效率低下。我更愿意找到一些方法来调整einsum以输出我之后的内容。

这是可能的吗?

1 个答案:

答案 0 :(得分:5)

  

我可以将结果包装在np.expand_dims中,但这对我来说似乎效率低下

在numpy中添加维度最差O(ndim),所以基本上是免费的。至关重要的是,实际数据没有被触及 - 所有发生的事情是.strides.shape元组每个都获得额外的元素

现在没办法用einsum直接得到你想要的东西。

如果您真的认为它提高了可读性,您可以尝试针对numpy提出拉取请求以支持ijk, ijk -> i1k之类的内容