Python 有没有一种方法可以在numpy中创建列向量,而不必创建列表列表?
假设我想用一个向量乘以一个矩阵:Python 有没有一种方法可以在numpy中创建列向量,而不必创建列表列表?,python,numpy,linear-algebra,Python,Numpy,Linear Algebra,假设我想用一个向量乘以一个矩阵: [1 2 3] [10] [4 5 6] * [11] [7 8 9] [12] 在使用Numpy的Python中,我会这样做: from numpy import * A = matrix( [[1, 2, 3], [4, 5, 6], [7, 8, 9]]) B = matrix( [[10], [11], [12]]) print(A * B) 但是,正如您所看到的,为了正确定义矩阵B,我必须键入[[1
[1 2 3] [10]
[4 5 6] * [11]
[7 8 9] [12]
在使用Numpy的Python中,我会这样做:
from numpy import *
A = matrix(
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
B = matrix(
[[10], [11], [12]])
print(A * B)
但是,正如您所看到的,为了正确定义矩阵B,我必须键入[[10]、[11]、[12]],这有点繁琐。有没有什么东西只是构造了一个向量,所以我可以键入类似向量[10,11,12]的东西,而不是矩阵[10],[11],[12]?你可以转置矩阵:
In [1]: import numpy as np
In [2]: A = np.matrix(
...: [[1, 2, 3],
...: [4, 5, 6],
...: [7, 8, 9]])
...:
In [3]: B = np.matrix([10, 11, 12]).T
In [4]: print(A * B)
[[ 68]
[167]
[266]]
您只需转置矩阵即可:
In [1]: import numpy as np
In [2]: A = np.matrix(
...: [[1, 2, 3],
...: [4, 5, 6],
...: [7, 8, 9]])
...:
In [3]: B = np.matrix([10, 11, 12]).T
In [4]: print(A * B)
[[ 68]
[167]
[266]]
您可以创建B作为numpy数组,然后使用dot方法
您可以创建B作为numpy数组,然后使用dot方法 另一个选择是: 另一个选择是:
一个简单的选项是创建新的无尺寸轴:
import numpy as np
A = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
])
B = np.array([ 10, 11, 12 ])
print(A * B[:,None])
一个简单的选项是创建新的无尺寸轴:
import numpy as np
A = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
])
B = np.array([ 10, 11, 12 ])
print(A * B[:,None])
与其他答案略有不同,但这是我的2美分: Python的zip在这里可能会有所帮助
In [13]: blist = [10, 11, 12]
In [14]: B = matrix(zip(blist))
In [15]: print B
[[10]
[11]
[12]]
与其他答案略有不同,但这是我的2美分: Python的zip在这里可能会有所帮助
In [13]: blist = [10, 11, 12]
In [14]: B = matrix(zip(blist))
In [15]: print B
[[10]
[11]
[12]]
您还可以使用c_uu列程序集对象:
>>> np.c_[[10,11,12]]
array([[10],
[11],
[12]])
或
或者使用linspace语义
>>> np.c_[10:12:3j]
array([[10.],
[11.],
[12.]])
您还可以使用c_uu列程序集对象:
>>> np.c_[[10,11,12]]
array([[10],
[11],
[12]])
或
或者使用linspace语义
>>> np.c_[10:12:3j]
array([[10.],
[11.],
[12.]])
OP注意事项:始终谨慎使用matrix类。在你认为它会像数组的时候,它的行为并不象数组。OP的一个注意事项是:始终谨慎使用matrix类。在您认为它会像数组那样的时候,它的行为并不象数组。