我如何做一个模仿 'keepdims' 的 einsum?
How do I do an einsum that mimics 'keepdims'?
一个 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 以输出我想要的内容。
这可能吗?
I can wrap the result in np.expand_dims
, but that seems inefficient to me
在 numpy 中添加一个维度最差 O(ndim),所以基本上是免费的。至关重要的是,实际数据没有被触及 - 所发生的只是 .strides
和 .shape
元组每个
得到一个额外的元素
目前没有办法使用einsum直接得到你想要的。
如果您真的认为它可以提高可读性,您可以尝试针对 numpy 提出拉取请求以支持类似 ijk, ijk -> i1k
的内容
一个 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 以输出我想要的内容。
这可能吗?
I can wrap the result in
np.expand_dims
, but that seems inefficient to me
在 numpy 中添加一个维度最差 O(ndim),所以基本上是免费的。至关重要的是,实际数据没有被触及 - 所发生的只是 .strides
和 .shape
元组每个
目前没有办法使用einsum直接得到你想要的。
如果您真的认为它可以提高可读性,您可以尝试针对 numpy 提出拉取请求以支持类似 ijk, ijk -> i1k
的内容