我可以将矩阵表示为数字吗
Can I represent matrix as a number
这对你们来说可能是一个非常简单的问题。
我想将整个矩阵表示为一个数字。例如,
假设我有一个 3*3 矩阵,如下所示:
[ 1 2 3, 4 5 6, 7 8 9 ]
我可以将这个矩阵表示为单个数字吗?
问完这个问题,让我告诉你我为什么要这样做。
我有 2 个矩阵,我想将 2 个矩阵的差作为一个数字。我真正想要的是 找出 different/similar 2 个矩阵如何用一个数字(而不是矩阵)表示。
你可以定义一个双射函数f
从space矩阵到自然数集:
f: M -> N
您可以使用哈希函数通过算法实现此方法。
有一整套函数可以获取矩阵并生成标量数:请参阅 https://en.wikipedia.org/wiki/Matrix_norm 如果您只想要一个简单的建议,请使用 Frobenius 范数。在 Python:
import numpy as np
frobenius = lambda matrix: np.sqrt(np.sum(matrix ** 2))
(或者,只使用 scipy.linalg.norm(matrix, 'fro')
!请参阅 scipy.linalg.norm 文档,其中列出了它支持的许多规范。)
现在。如果要将相似性 between two 矩阵量化为数字,请使用差异的范数:
frobenius(matrix1 - matrix2)
(不要先取范数再减去,这不是衡量矩阵距离的可靠方法。(即frobenius(matrixA) - frobenius(matrixB) # BAD BAD BAD!
。))
您想将两个矩阵之间的差作为一个数字。因此,您不想将这两个矩阵表示为一个数字然后取差 - 这会起作用,但它会破坏信息。
如果矩阵大小相同,取均方根差。 a{0][0] - b[0][0] 平方等。然后求和,取平均值,然后开平方(按此顺序)。
这对你们来说可能是一个非常简单的问题。
我想将整个矩阵表示为一个数字。例如,
假设我有一个 3*3 矩阵,如下所示:
[ 1 2 3, 4 5 6, 7 8 9 ]
我可以将这个矩阵表示为单个数字吗?
问完这个问题,让我告诉你我为什么要这样做。
我有 2 个矩阵,我想将 2 个矩阵的差作为一个数字。我真正想要的是 找出 different/similar 2 个矩阵如何用一个数字(而不是矩阵)表示。
你可以定义一个双射函数f
从space矩阵到自然数集:
f: M -> N
您可以使用哈希函数通过算法实现此方法。
有一整套函数可以获取矩阵并生成标量数:请参阅 https://en.wikipedia.org/wiki/Matrix_norm 如果您只想要一个简单的建议,请使用 Frobenius 范数。在 Python:
import numpy as np
frobenius = lambda matrix: np.sqrt(np.sum(matrix ** 2))
(或者,只使用 scipy.linalg.norm(matrix, 'fro')
!请参阅 scipy.linalg.norm 文档,其中列出了它支持的许多规范。)
现在。如果要将相似性 between two 矩阵量化为数字,请使用差异的范数:
frobenius(matrix1 - matrix2)
(不要先取范数再减去,这不是衡量矩阵距离的可靠方法。(即frobenius(matrixA) - frobenius(matrixB) # BAD BAD BAD!
。))
您想将两个矩阵之间的差作为一个数字。因此,您不想将这两个矩阵表示为一个数字然后取差 - 这会起作用,但它会破坏信息。
如果矩阵大小相同,取均方根差。 a{0][0] - b[0][0] 平方等。然后求和,取平均值,然后开平方(按此顺序)。