python - Cython `inline` 方法无法访问
问题描述
我正在尝试使用一些sklearn
用 Cython 编写的模块(我不会说)。在模块中,定义了一个方法cdef inline...
,并且模块内的其他方法似乎cdef
使用这些方法,但我无法访问它们。
这是定义类的地方,并且有一个方法dist
:
cdef class EuclideanDistance(DistanceMetric):
#STUFF
cdef inline DTYPE_t dist(self, DTYPE_t* x1, DTYPE_t* x2,
ITYPE_t size) nogil except -1:
return euclidean_dist(x1, x2, size)
#MORESTUFF
在这里我们看到该dist
方法在其他地方使用:
cdef inline DTYPE_t dist(self, DTYPE_t* x1, DTYPE_t* x2,
ITYPE_t size) nogil except -1:
"""Compute the distance between arrays x1 and x2"""
self.n_calls += 1
if self.euclidean:
return euclidean_dist(x1, x2, size)
else:
return self.dist_metric.dist(x1, x2, size) ####HERE!!!!
但是当我尝试使用这种方法时,它根本不存在......
import sklearn.neighbors
help(sklearn.neighbors.dist_metrics.EuclideanDistance)
如何访问该dist
方法?
解决方案
查看DistanceMetric 类。它打算像这样使用:
from sklearn.neighbors import DistanceMetric
dist = DistanceMetric.get_metric('euclidean')
print(dist)
# <sklearn.neighbors.dist_metrics.EuclideanDistance at 0x7fabe405e848>
然后访问 dist 方法,使用pairwise()
,它将在内部调用dist()
X = [[0, 1, 2], [3, 4, 5]]
dist.pairwise(X)
# array([[0. , 5.19615242],
# [5.19615242, 0. ]])
pairwise()
您还可以在方法中使用两个数组 X、Y 和
推荐阅读
- ios - 通过 vtable 调度比散列表更快,但如果在任何地方使用会消耗大量内存
- swift - 如果数据库中已存在用户,则拒绝创建用户
- php - 使用 PHP/Windows/MySQL 连接到 GDB(或 FDB)数据库文件
- javascript - 如何检查 URL 是否仅包含使用 javascript 的域?
- unit-testing - Roboletric 4.0.1 不断在 buildActivity 上抛出 Resources$NotFoundException
- javascript - three.js 用 3d '绳索' 连接两个移动的物体
- azure - 天蓝色嵌套模板依赖处理错误
- vue.js - Vue js vuelidate 无法读取动态验证模式中的自定义验证
- python - 在 RasPi 上使用 psutil(Python 模块)的问题
- node.js - 确保子文档的属性在猫鼬中具有唯一值