From 4788374b658f50959cc41f1ffde6dd2d9ee45b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6kcen=20Eraslan?= Date: Tue, 29 Aug 2017 17:29:01 +0200 Subject: [PATCH] Fix col-major array bug in Python binding Fixes #230. --- python_bindings/nmslib.cc | 2 +- python_bindings/tests/bindings_test.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/python_bindings/nmslib.cc b/python_bindings/nmslib.cc index 69e0f36..915d4c3 100644 --- a/python_bindings/nmslib.cc +++ b/python_bindings/nmslib.cc @@ -208,7 +208,7 @@ struct IndexWrapper { } else if (data_type == DATATYPE_DENSE_VECTOR) { // allow numpy arrays to be returned here too - py::array_t items(input); + py::array_t items(input); auto buffer = items.request(); if (buffer.ndim != 2) throw std::runtime_error("data must be a 2d array"); diff --git a/python_bindings/tests/bindings_test.py b/python_bindings/tests/bindings_test.py index 5fb88a4..202b8c4 100644 --- a/python_bindings/tests/bindings_test.py +++ b/python_bindings/tests/bindings_test.py @@ -47,6 +47,13 @@ def testKnnQueryBatch(self): for query, (ids, distances) in zip(queries, results): self.assertTrue(get_hitrate(get_exact_cosine(query, data), ids) >= 5) + # test col-major arrays + queries = np.asfortranarray(queries) + results = index.knnQueryBatch(queries, k=10) + for query, (ids, distances) in zip(queries, results): + self.assertTrue(get_hitrate(get_exact_cosine(query, data), ids) >= 5) + + def testReloadIndex(self): np.random.seed(23) data = np.random.randn(1000, 10).astype(np.float32)