Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 得到3个矩阵的矩阵积_Python_Numpy_Matrix Multiplication_Rotational Matrices - Fatal编程技术网

Python 得到3个矩阵的矩阵积

Python 得到3个矩阵的矩阵积,python,numpy,matrix-multiplication,rotational-matrices,Python,Numpy,Matrix Multiplication,Rotational Matrices,我有3,3X3个矩阵存储在numpy数组中。 我想得到乘积,计算一个旋转矩阵 目前我正在做的是 rotation\u matrix=(a*b*c)但我不知道这是否是乘法矩阵的正确方法-我应该使用吗。dot我也尝试过rotation\u matrix=pre\u rotation.dot(result\u pre\u tilt)。dot(post\u rotation) 和rotation\u matrix=np.相乘(结果\u pre\u tilt,pre\u rotation,post\u r

我有3,3X3个矩阵存储在numpy数组中。 我想得到乘积,计算一个旋转矩阵

目前我正在做的是
rotation\u matrix=(a*b*c)
但我不知道这是否是乘法矩阵的正确方法-我应该使用
吗。dot
我也尝试过
rotation\u matrix=pre\u rotation.dot(result\u pre\u tilt)。dot(post\u rotation)

rotation\u matrix=np.相乘(结果\u pre\u tilt,pre\u rotation,post\u rotation)


您可以像这样尝试使用
dot

final= numpy.dot(tilt_matrix, (numpy.dot(rotation_matrix, original))
需要考虑的事项:

  • numpy.dot
    是一个函数,而不是一个方法(不可能调用
    a.dot(B)
    ,而是调用
    np.dot(a,B)
  • 顺序很重要-如果你没有得到正确的结果,试着改变顺序。有时需要先平移,然后旋转,有时则相反。视情况而定
  • 对于二维矩阵,左矩阵列号必须与右矩阵行号大小相同

  • 您可以像这样尝试使用
    dot

    final= numpy.dot(tilt_matrix, (numpy.dot(rotation_matrix, original))
    
    需要考虑的事项:

  • numpy.dot
    是一个函数,而不是一个方法(不可能调用
    a.dot(B)
    ,而是调用
    np.dot(a,B)
  • 顺序很重要-如果你没有得到正确的结果,试着改变顺序。有时需要先平移,然后旋转,有时则相反。视情况而定
  • 对于二维矩阵,左矩阵列号必须与右矩阵行号大小相同

  • 这是正确的结果吗?举个例子可能会有所帮助<代码>三维矩阵可能不明确。形状是3x3还是2x3x4?或者别的什么。“存储在numpy数组中的3D矩阵”它们是什么类型,
    matrix
    还是
    ndarray
    ?(检查
    类型(a)
    )如果它们是
    矩阵
    对象,则是,
    *
    是矩阵乘法。如果它们是
    numpy.ndarray
    对象,那么
    *
    就是元素乘法。在这种情况下,要进行矩阵乘法,请使用
    dot
    方法:
    rotation\u matrix=a.dot(b).dot(c)
    。(你也可以将
    矩阵
    对象一起使用。)@WarrenWeckesser我更新了这个问题,让它更清楚。这些是常规的numpy数组,而不是
    矩阵
    对象。使用
    dot
    方法(或者,如果您使用的是全新的Python和numpy版本,请使用
    @
    rotation\u matrix=a@b@c
    ),这是否给出了正确的结果?举个例子可能会有所帮助<代码>三维矩阵可能不明确。形状是3x3还是2x3x4?或者别的什么。“存储在numpy数组中的3D矩阵”它们是什么类型,
    matrix
    还是
    ndarray
    ?(检查
    类型(a)
    )如果它们是
    矩阵
    对象,则是,
    *
    是矩阵乘法。如果它们是
    numpy.ndarray
    对象,那么
    *
    就是元素乘法。在这种情况下,要进行矩阵乘法,请使用
    dot
    方法:
    rotation\u matrix=a.dot(b).dot(c)
    。(你也可以将
    矩阵
    对象一起使用。)@WarrenWeckesser我更新了这个问题,让它更清楚。这些是常规的numpy数组,而不是
    矩阵
    对象。使用
    dot
    方法(或者,如果您使用的是全新的Python和numpy版本,请使用
    rotation\u matrix=a@b@c
    )。如果
    a
    是numpy数组,
    a.dot(b)
    np.dot(a,b)
    相同。如果
    a
    是numpy数组,
    a.dot(b)
    np.dot(a,b)相同。