@@ -36,6 +36,9 @@ import cython
36
36
37
37
import numpy as np
38
38
39
+ cdef extern from " numpy/arrayobject.h" :
40
+ intp_t * PyArray_SHAPE(cnp.PyArrayObject * )
41
+
39
42
cdef cnp.float64_t INFTY = np.inf
40
43
cdef cnp.intp_t NOISE = - 1
41
44
@@ -240,7 +243,7 @@ cdef dict _compute_stability(
240
243
cnp.float64_t[::1 ] result, births
241
244
cnp.intp_t[:] parents = condensed_tree[' parent' ]
242
245
243
- cnp.intp_t parent, cluster_size, result_index
246
+ cnp.intp_t parent, cluster_size, result_index, idx
244
247
cnp.float64_t lambda_val
245
248
CONDENSED_t condensed_node
246
249
cnp.float64_t[:, :] result_pre_dict
@@ -251,14 +254,15 @@ cdef dict _compute_stability(
251
254
largest_child = max (largest_child, smallest_cluster)
252
255
births = np.full(largest_child + 1 , np.nan, dtype = np.float64)
253
256
254
- births = np.full(largest_child + 1 , np.nan, dtype = np.float64)
255
- for condensed_node in condensed_tree:
257
+ for idx in range (PyArray_SHAPE( < cnp.PyArrayObject * > condensed_tree)[ 0 ]):
258
+ condensed_node = condensed_tree[idx]
256
259
births[condensed_node.child] = condensed_node.value
257
260
258
261
births[smallest_cluster] = 0.0
259
262
260
263
result = np.zeros(num_clusters, dtype = np.float64)
261
- for condensed_node in condensed_tree:
264
+ for idx in range (PyArray_SHAPE(< cnp.PyArrayObject* > condensed_tree)[0 ]):
265
+ condensed_node = condensed_tree[idx]
262
266
parent = condensed_node.parent
263
267
lambda_val = condensed_node.value
264
268
cluster_size = condensed_node.cluster_size
0 commit comments