【问题标题】:Repeated Numpy Array Dot Products重复的 Numpy 阵列点积
【发布时间】:2018-10-10 01:08:20
【问题描述】:

假设我们有 numpy 数组 A.shape = (1, 2)B.shape = (2, 2) 以及计数 X

如果X = 1,我们想要结果=A.dot(B)

如果X = 2,我们想要结果=(A.dot(B)).dot(B)

如果X = 3,我们想要结果=((A.dot(B)).dot(B)).dot(B)

我们如何在 Python 中编写一个函数,以提供基于 9n X 的正确结果?尝试循环遍历基于X的点积,但是代码很乱,不能正常工作。

【问题讨论】:

  • 你有没有努力自己解决这个问题?
  • 伪代码:循环x次,每次取点积,返回整体结果
  • "但是代码很乱,不能正常工作。" - 您现在有了答案,但为了将来,请发布一些代码向我们展示您尝试过的内容,我们可以帮助您修复它。我猜相当多的反对票是因为您没有发布任何自己的尝试。
  • 循环应该像for _ in range(X): A = A.dot(B)一样简单。如果您向我们展示了您的尝试,我们可以帮助您修复它,但是试图解释您在该循环中可能出错的地方而不知道您实际出错的地方几乎是不可能的。
  • @Henry 这样想:dot 是一种乘法。求幂只是重复乘法,对吗? (好吧,如果你在处理复数,那就错了……但我们正在处理作为基数的矩阵和作为指数的自然数。)因此,寻找某种基于幂的答案可能是值得的。在文档中可能很难找到,但在 Mad Physicist 的大脑中很容易找到。所以你所需要的就是索引那个大脑以进行搜索……这基本上就是 SO 是什么。 :)

标签: python numpy dot-product


【解决方案1】:

使用矩阵乘法交换性和matrix_power 的一条线:

A.dot(np.linalg.matrix_power(B, X))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-31
    • 2017-05-10
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多