numpy.ufunc.outer #

方法

ufunc。外部( A , B , / , ** kwargs ) #

将 ufunc运算应用于所有对 (a, b),其中 a 在A中,b 在B中。

让,。那么结果C是 一个维度为 M + N 的数组,使得:M = A.ndimN = B.ndimop.outer(A, B)

\[C[i_0, ..., i_{M-1}, j_0, ..., j_{N-1}] = op(A[i_0, ..., i_{M-1}], B[j_0, ..., j_{N-1}])\]

对于一维AB,这相当于:

r = empty(len(A),len(B))
for i in range(len(A)):
    for j in range(len(B)):
        r[i,j] = op(A[i], B[j])  # op = ufunc in question
参数
类似数组

第一个数组

B 类数组

第二个数组

夸格斯任何

传递给 ufunc 的参数。通常dtype还是出go。请ufunc参阅 参考资料 获取所有可用参数的全面概述。

返回
r ndarray

输出数组

也可以看看

numpy.outer

一个不太强大的版本是一np.multiply.outerravel的所有输入。这主要是为了与旧代码兼容。

tensordot

np.tensordot(a, b, axes=((), ()))并且对于 a 和 b 的所有维度表现相同。np.multiply.outer(a, b)

例子

>>> np.multiply.outer([1, 2, 3], [4, 5, 6])
array([[ 4,  5,  6],
       [ 8, 10, 12],
       [12, 15, 18]])

多维示例:

>>> A = np.array([[1, 2, 3], [4, 5, 6]])
>>> A.shape
(2, 3)
>>> B = np.array([[1, 2, 3, 4]])
>>> B.shape
(1, 4)
>>> C = np.multiply.outer(A, B)
>>> C.shape; C
(2, 3, 1, 4)
array([[[[ 1,  2,  3,  4]],
        [[ 2,  4,  6,  8]],
        [[ 3,  6,  9, 12]]],
       [[[ 4,  8, 12, 16]],
        [[ 5, 10, 15, 20]],
        [[ 6, 12, 18, 24]]]])