我正在尝试通过此链接https://sourceforge.net/projects/gower-distance-4python/files/使用gower功能。我正在尝试将其应用于分类变量数据框。但是我可以看到,当我使用gower_distances函数时,对角线中有一些非零值(我需要将它们全部设为0)。
我一直在尝试调试代码。我想我知道这是在哪里发生的,它正在_gower_distance_row函数中发生。这是我不了解的代码行; sij_cat = np.where(xi_cat == xj_cat,np.zeros_like(xi_cat),np.ones_like(xi_cat))。但是我将以一种更易于理解的格式呈现它。
说我有
xi=np.array(['cat','dog','monkey'])
xj=np.array([['cat','dog','monkey'],['horse','dog','hairy']])
sij_cat = np.where(xi == xj,np.zeros_like(xi),np.ones_like(xi))
我得到这个结果:
array([['', '', ''],
['1', '', '1']], dtype='<U6')
因为我正在将cat与cat比较,所以我想指定零,并且它的不同之处例如猫与马,猴子与毛茸茸应该是1。我不明白为什么在上述结果中我会得到“?”我想要零。我该如何解决?
答案 0 :(得分:1)
np.logical_not(xi == xj).astype(int)
输出将是:
array([[0, 0, 0],
[1, 0, 1]])
说明:
np.logical_not
将True
更改为False
,将False
更改为True
,astype(int)
更改为0
和1
>