首先进行矢量化
foo(),即进行修改
foo(),使其可以正确处理形状数组
(N, A, B),然后返回形状数组
(A,B)。这一步通常很困难。如何完成此操作完全取决于所
foo()执行的操作。对于给定的示例,这很容易做到:
def foo(arr): return np.sum(arr, axis=0)
现在,使用广播规则创建一个
(N,A, B)包含所有矢量差的数组,并将其传递给
foo():
foo(a[:, :, np.newaxis] - b[:, np.newaxis])

首先进行矢量化
foo(),即进行修改
foo(),使其可以正确处理形状数组
(N, A, B),然后返回形状数组
(A,B)。这一步通常很困难。如何完成此操作完全取决于所
foo()执行的操作。对于给定的示例,这很容易做到:
def foo(arr): return np.sum(arr, axis=0)
现在,使用广播规则创建一个
(N,A, B)包含所有矢量差的数组,并将其传递给
foo():
foo(a[:, :, np.newaxis] - b[:, np.newaxis])