diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2020-11-13 11:57:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-13 11:57:17 +0100 |
commit | a6fe8d15a755c4843b2981cf6e1ba00b6eccd81b (patch) | |
tree | 0a40aa6922e78c87d6b109a31e2c85791daeccf4 /src/python/gudhi/representations/vector_methods.py | |
parent | 6811a26e8b45ba4fde5ad3268d0eb07d3070a349 (diff) | |
parent | 0022442a303f297ac773e262abd2661d2ce0a614 (diff) |
Merge pull request #423 from mglisse/betti
More numpy in BettiCurve
Diffstat (limited to 'src/python/gudhi/representations/vector_methods.py')
-rw-r--r-- | src/python/gudhi/representations/vector_methods.py | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/src/python/gudhi/representations/vector_methods.py b/src/python/gudhi/representations/vector_methods.py index 5ca127f6..cdcb1fde 100644 --- a/src/python/gudhi/representations/vector_methods.py +++ b/src/python/gudhi/representations/vector_methods.py @@ -323,22 +323,15 @@ class BettiCurve(BaseEstimator, TransformerMixin): Returns: numpy array with shape (number of diagrams) x (**resolution**): output Betti curves. """ - num_diag, Xfit = len(X), [] + Xfit = [] x_values = np.linspace(self.sample_range[0], self.sample_range[1], self.resolution) step_x = x_values[1] - x_values[0] - for i in range(num_diag): - - diagram, num_pts_in_diag = X[i], X[i].shape[0] - + for diagram in X: + diagram_int = np.clip(np.ceil((diagram[:,:2] - self.sample_range[0]) / step_x), 0, self.resolution).astype(int) bc = np.zeros(self.resolution) - for j in range(num_pts_in_diag): - [px,py] = diagram[j,:2] - min_idx = np.clip(np.ceil((px - self.sample_range[0]) / step_x).astype(int), 0, self.resolution) - max_idx = np.clip(np.ceil((py - self.sample_range[0]) / step_x).astype(int), 0, self.resolution) - for k in range(min_idx, max_idx): - bc[k] += 1 - + for interval in diagram_int: + bc[interval[0]:interval[1]] += 1 Xfit.append(np.reshape(bc,[1,-1])) Xfit = np.concatenate(Xfit, 0) |