【问题标题】:array of matrices numpy矩阵数组
【发布时间】:2014-09-26 00:46:44
【问题描述】:

我需要在 numpy 中创建一个矩阵数组。这样我就可以将它们视为标量并用另一个数组点它,如下所示:

a = [1,2,3]
b = [A,B,C] #A, B, and C are matrices

result = a.dot(b) #1A + 2B + 3C

或者类似地使用矩阵 M 使得:

M.dot(b) -> another array of matrices

有没有办法做到这一点?目前,每个类似数组的东西都被包含在首先允许 .dot() 的外部 numpy 数组中。因此,如果 ABC 是 3x3 矩阵,则 a 将是:

a.shape -> (3,3,3) #matrices absorbed into array

谢谢。

【问题讨论】:

  • 你想让M.dot(b)等于什么?
  • Matrix M 是任何系数矩阵。 M.dot(b) 将给出另一个转换后的矩阵数组。

标签: arrays numpy matrix


【解决方案1】:

解决方案:

import numpy as np
a = np.array([1,2,3])
X= np.ones((3,3))
Y= np.ones((3,3))
Z= np.ones((3,3))
b = np.array([X,Y,Z], dtype=object)
print a.dot(b)

结果:

[[6.0 6.0 6.0]
 [6.0 6.0 6.0]
 [6.0 6.0 6.0]]

请记住,标量数组的长度必须与矩阵大小相同(在本例中矩阵为 3x3,因此您需要一个长度为 3 的数组)

【讨论】:

  • 好的。 dtype=object 是什么?我不明白1 * b 会如何给出这个结果。
  • dtype=object 告诉 numpy 数组的元素是对象而不是数字(例如,np.float32)。 1*b 是向量的标量,因此将标量乘以每个矩阵。我在帖子中更新了解决方案,现在它可以按您的预期工作了。
  • @arkaeologic 如果答案对你来说可以接受。
  • 这正是我所需要的。非常感谢。是dtype=object 做到了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-08
  • 2023-01-25
相关资源
最近更新 更多