假设我想将矩阵 w 与向量 v 相乘。(我刚刚发现我们不支持数学……太烦人了)
w = np.array([np.array([1,3]), np.array([2,4])])
v = np.array([np.array([5]), np.array([6])])
print(w)
print(v)
print(np.dot(w,v))
[[1 3]
[2 4]]
[[5]
[6]]
[[23]
[34]]
这段代码看起来完全统一。向量是多个分量的表示。所以我希望向量是一个数组,例如
np.array([5,6])
这很有意义,因为我们有一个包含 2 个分量的向量单位。
矩阵变得更加奇怪。
[1,2]
是第一个基向量的分量,但我们必须将它写在2个不同的向量上?我预计语法是np.array([np.array([1,2]), np.array([3,4])])
。如果我们这样写,它会使第一个基向量的所有分量都很好地位于一个数组中。
我在这里遗漏了什么或者 numpy 语法完全疯狂吗?
这段代码看起来完全统一。向量是多个分量的表示。
严格来说,问题中的代码不是矩阵乘以向量。它将矩阵乘以矩阵,这就是结果是 2D 的原因。
所以我希望向量是一个数组,例如
这很有意义,因为我们有一个包含 2 个分量的向量单位。np.array([5,6])
你可以做到的。如果您
dot
一个 2D 数组与一个 1D 数组,NumPy 会将其解释为矩阵乘以向量。示例:
w = np.array([np.array([1,3]), np.array([2,4])])
v = np.array([5, 6])
print(w)
print(v)
print(np.dot(w,v))
# [[1 3]
# [2 4]]
# [5 6]
# [23 34]
矩阵变得更加奇怪。
是第一个基向量的分量,但我们必须将它写在2个不同的向量上?我预计语法是[1,2]
。如果我们这样写,它会使第一个基向量的所有分量都很好地位于一个数组中。np.array([np.array([1,2]), np.array([3,4])])
如果您更喜欢将矩阵表示为一系列列向量而不是行向量,则可以这样做。
示例1:
w = np.array([[1, 2], [3, 4]]).T
这会创建一个数组,然后转置它。
示例2:
w = np.column_stack([[1, 2], [3, 4]])
这直接通过列向量创建数组。
这两种方法似乎都有效。