gpt4 book ai didi

python - vector/matrix `np.outer` 乘积是否有类似于 "outer"的函数?

转载 作者:太空宇宙 更新时间:2023-11-04 10:26:53 27 4
gpt4 key购买 nike

我想知道 numpy 中是否有一个功能与 np.outer 类似,但使用二维数组和向量作为输入参数。结果应该是一个 3 维数组。

例如,如果我有一个矩阵 M 和一个向量 v,我想将原始矩阵 M 堆叠 len(v) 次,每个“切片”是 M*v[j],带有 j 位置参数。

它存在于 numpy 中还是我应该自己实现它(可能会降低性能)?

最佳答案

您可以使用普通的 array broadcasting 来做到这一点:

M = np.arange(9).reshape(3, 3)
# array([[0, 1, 2],
# [3, 4, 5],
# [6, 7, 8]])

v = np.arange(4)
# array([0, 1, 2, 3])

Mv = M[:, :, None] * v[None, None, :]
# array([[[ 0, 0, 0, 0],
# [ 0, 1, 2, 3],
# [ 0, 2, 4, 6]],

# [[ 0, 3, 6, 9],
# [ 0, 4, 8, 12],
# [ 0, 5, 10, 15]],

# [[ 0, 6, 12, 18],
# [ 0, 7, 14, 21],
# [ 0, 8, 16, 24]]])

# you could use np.newaxis in place of None (np.newaxis is just an alias of
# None). you could also omit the 'None's in the indices into v:
# Mv = M[:, :, None] * v

# check
for jj in xrange(v.shape[0]):
assert np.all(Mv[:, :, jj] == M * v[jj])

关于python - vector/matrix `np.outer` 乘积是否有类似于 "outer"的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28876991/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com