numpy 表示是列向量吗?

问题描述 投票:0回答:1

假设我想将矩阵 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 语法完全疯狂吗?

linear-algebra numpy-ndarray
1个回答
0
投票

这段代码看起来完全统一。向量是多个分量的表示。

严格来说,问题中的代码不是矩阵乘以向量。它将矩阵乘以矩阵,这就是结果是 2D 的原因。

所以我希望向量是一个数组,例如

np.array([5,6])
这很有意义,因为我们有一个包含 2 个分量的向量单位。

你可以做到的。如果您

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]

矩阵变得更加奇怪。

[1,2]
是第一个基向量的分量,但我们必须将它写在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]])

这直接通过列向量创建数组。

这两种方法似乎都有效。

© www.soinside.com 2019 - 2024. All rights reserved.