【问题标题】:Is there a way to use numpy.outer on only a subset of dimensions?有没有办法仅在维度的子集上使用 numpy.outer?
【发布时间】:2021-03-27 22:07:33
【问题描述】:

我有一个数组数组,像这样:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])

我想计算数组元素之间的成对差异,例如:

[[[ 0,  0,  0], [-3, -3, -3]],
 [[ 3,  3,  3], [ 0,  0,  0]]

我的第一个想法是使用np.subtract.outer(a, a),但这并没有达到我想要的效果——它在数组中的一层太深了。我可以看到我需要的数字在np.subtract.outer(a, a) 的输出中,但是我实际使用的数组非常大,我没有足够的内存来分配结果。

谢谢!

【问题讨论】:

    标签: python numpy numpy-ndarray numpy-ufunc


    【解决方案1】:

    你可以简单地使用广播来解决这个问题。

    a[:, None, :] - a[None, :, :]
    

    给你你想要的。

    【讨论】:

    • 谢谢!我知道有一个我没有看到的简单解决方案。
    猜你喜欢
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2021-11-02
    相关资源
    最近更新 更多