【问题标题】:multiplication of arrays in pythonpython中数组的乘法
【发布时间】:2020-01-05 15:19:58
【问题描述】:

这是在 python 中产生问题的代码行。我正在处理图像,但没有分类数据。

normalized_face_vector = [88, 90000]
eigen_vectors = [88, 88]
low_dimension_to_high_dimension = normalized_face_vector.dot(eigen_vectors)

当上面的行执行它给出以下错误。

shapes (88,90000) and (88,88) not aligned: 90000 (dim 1) != 88 (dim 0)

如何执行 normalized_face_vector 与 eigen_vectors 的乘法?

【问题讨论】:

  • 转置矩阵,或反转操作数。然而,该操作同样适用于特征向量矩阵,因为它是或转置的,但你会得到不同的结果。因此,如果您不知道自己在这里做什么,则需要先停下来找出答案。不要只是强迫操作数匹配并期望得到正确的结果,因为它们可以以不同的方式匹配,并且只有一种方式是正确的。

标签: python image-processing face-recognition


【解决方案1】:

您收到错误是因为您的两个矩阵的尺寸都不正确。 在您的错误消息中明确提到:形状 (88,90000) 和 (88,88) 未对齐:90000 (dim 1) != 88 (dim 0)。 em>

对于点积,Matrix_A 的列数必须等于 Matrix_B 的行数。

在您的情况下,您可以对 matrix_A 进行 转置,然后应用点积。

查看此示例,这可能会对您有所帮助:

import numpy as np
Matrix_A=[               #4x5
    [3,4,6,4,6],
    [3,8,7,6,6],
    [2,7,9,2,2],
    [7,1,2,7,4]]
Matrix_B=[               #4x4
    [8,4,9,5],
    [3,2,7,3],
    [9,7,2,6],
    [3,2,3,7]]
Matrix_A=np.array(a)
Matrix_B=np.array(b)
Matrix_C=np.dot(Matrix_A.transpose(),Matrix_B)
Matrix_C

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    相关资源
    最近更新 更多