我在数据帧上使用矩阵乘法及其转置df@df.T
因此,如果我有一个df,它如下所示:(下面的1表示对象具有该属性,而0表示没有该属性):
Object Property1 Property2 Property3
A 1 1 1
B 0 1 1
C 1 0 0
使用df@df.T给我:
A B C
A 3 2 1
B 2 2 0
C 1 0 1
这可以看作是一个矩阵,显示每个对象与另一个对象有多少共同的属性
我现在想修改一个问题,在这个问题中,properties列显示的不是对象是否具有属性的二进制指示,而是该属性的级别。因此,新的df如下所示:(属性值1,2,3下方显示其级别。但0表示没有该属性)
Object Property1 Property2 Property3
A 3 2 1
B 0 2 3
C 2 0 0
我想应用矩阵乘法,但修改了“公共”属性的定义。只有当一个属性的级别在另一个属性的+-1范围内时,两个对象才会有一个公共属性
下面是结果的样子:
A B C
A 3 1 1
B 1 2 0
C 1 0 1
请注意,A和B之间的公共属性数已从2更改为1。这是因为A和B之间的属性3不在+-1级别内。此外,0仍然意味着对象没有属性,因此A和C仍然有1个公共属性(C的属性3为0)
如何在Python中实现这一点
这可以通过修改两个数据帧的矩阵乘法来实现
代码
用法
原始乘法原始乘法
修改的乘法
相关问题 更多 >
编程相关推荐