如何在Python中查找两个矩阵之间的差异,结果不应包含任何带负号的值

JKC*_*JKC 4 python numpy matrix python-3.x pandas

我有一个 Panda Dataframe,其中有两列(Word 和 Word_Position)。我需要找到单词之间的距离并以矩阵形式呈现输出以获得更好的可读性。

到目前为止,我所做的是从 DF.Word_Position 列创建一个行矩阵,并将其转置以创建一个列矩阵。当我减去这两个矩阵时,我得到了一些前面带有负号的值。

出于对伟大数学的应有尊重,这绝对是正确的,但对于我的要求,我只需要数字而不是减号。

还有其他更好的方法来做同样的事情吗?感谢您的帮助。提前致谢。

注意:我使用的是Python 3.6

代码片段及其相应的输出供您参考

m1 = np.matrix(df1['Word Position'])
print(m1)
[[ 1  2  3 ..., 19 20 21]]

m2 = np.matrix(m1.T)
print(m2)
[[ 1]
 [ 2]
 [ 3]
 ..., 
 [19]
 [20]
 [21]]

print(m2-m1)
[[  0  -1  -2 ..., -18 -19 -20]
 [  1   0  -1 ..., -17 -18 -19]
 [  2   1   0 ..., -16 -17 -18]
 ..., 
 [ 18  17  16 ...,   0  -1  -2]
 [ 19  18  17 ...,   1   0  -1]
 [ 20  19  18 ...,   2   1   0]]
Run Code Online (Sandbox Code Playgroud)

Ale*_*der 5

只取绝对值吗?

np.abs(m2 - m1)
Run Code Online (Sandbox Code Playgroud)

您的代码表明您的数据由 numpy 数组组成,因此上面的解决方案应该有效。

如果它们是数据框,你可以这样做:

m2.sub(m1).abs()
Run Code Online (Sandbox Code Playgroud)