【问题标题】:Numpy vector/matrix multiplication works unexpectedlyNumpy 向量/矩阵乘法意外工作
【发布时间】:2021-04-26 08:29:49
【问题描述】:

我的代码有问题: 我想以下面看到的方式将两个“向量”相乘

# what i want
import numpy as np

a = np.array([1,2,3])
b = np.array([2,3,4,5])
z = f(a,b)

z -> array([
    [2,3,4,5],
    [4,6,8,10],
    [6,9,12,15]
])

f应该如何定义?

【问题讨论】:

  • 使用np.array 而不是np.shape
  • 是的,抱歉,问题中的错误
  • 简单的广播a[:,None] * b[None,:]

标签: python numpy numpy-ndarray


【解决方案1】:

您可以使用np.multiply.outer(a, b)

【讨论】:

  • 也可以,但不知何故会导致额外的维度仍然 thx
  • @TK36 除了保存二维结果的第二个维度,这实际上不应该产生任何其他维度。那你到底是什么意思?
  • 顺便说一句,np.outer(a, b) 也可以。
  • 我意外地事先对其进行了改造,你是对的
  • @simon 我更喜欢np.multiply.outer 更明确地说明所执行的底层操作。不过,这是一个品味问题。
【解决方案2】:

您可以在重构数组上使用np.matmul 函数,例如

a = np.reshape(a, (3,1))
b = np.reshape(b, (1,4))
np.matmul(a,b)

【讨论】:

    猜你喜欢
    • 2014-03-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2020-10-29
    • 1970-01-01
    相关资源
    最近更新 更多