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类。在您认为它会像数组那样的时候,它的行为并不象数组。