def readXvecs(filename, dim, count, tonumpy=True): extension = filename.strip().split('.')[-1] if extension == 'bvecs': points = yael.fvec_new(dim * count) yael.b2fvecs_read(filename, dim, count, points) if tonumpy: a = yael.fvec_to_numpy(points, (count, dim)) yael.free(points) return a else: return points elif extension == 'fvecs': points = yael.fvec_new(dim * count) yael.fvecs_read(filename, dim, count, points) if tonumpy: a = yael.fvec_to_numpy(points, (count, dim)) yael.free(points) return a else: return points elif extension == 'i8vecs': file = open(filename, 'r') points = np.zeros((count, dim), dtype='float32') for i in xrange(count): file.read(4) points[i, :] = np.fromfile(file, np.int8, dim).astype('float32') return points elif extension == 'ivecs': points = yael.ivec_new(dim * count) yael.ivecs_fread(open(filename, 'r'), points, count, dim) if tonumpy: a = yael.ivec_to_numpy(points, (count, dim)) yael.free(points) return a else: return points else: raise Exception('Bad file extension!')
def readXvecs(filename, dim, count, tonumpy=True): extension = filename.strip().split('.')[-1] if extension == 'bvecs': points = yael.fvec_new(dim * count) yael.b2fvecs_read(filename, dim, count, points) if tonumpy: a = yael.fvec_to_numpy(points, (count, dim)) yael.free(points) return a else: return points elif extension == 'fvecs': points = yael.fvec_new(dim * count) yael.fvecs_read(filename, dim, count, points) if tonumpy: a = yael.fvec_to_numpy(points, (count, dim)) yael.free(points) return a else: return points elif extension == 'i8vecs': file = open(filename, 'r') points = np.zeros((count, dim), dtype='float32') for i in xrange(count): file.read(4) points[i,:] = np.fromfile(file, np.int8, dim).astype('float32') return points elif extension == 'ivecs': points = yael.ivec_new(dim * count) yael.ivecs_fread(open(filename, 'r'), points, count, dim) if tonumpy: a = yael.ivec_to_numpy(points, (count, dim)) yael.free(points) return a else: return points else: raise Exception('Bad file extension!')
print('-> Yael A') yael_a = yael.FloatArray.acquirepointer(yael.numpy_to_fvec(numpy_a)) n = numpy_a.size yael.fvec_print(yael_a, n) print('-> Numpy A') print(yael.fvec_to_numpy(yael_a, n)) print('int array') numpy_a = np.array(list(range(5)), dtype='int32') print(numpy_a) print('-> Yael A2') yael_a = yael.IntArray.acquirepointer(yael.numpy_to_ivec(numpy_a)) n = numpy_a.size yael.ivec_print(yael_a, n) print('-> Numpy A2') print(yael.ivec_to_numpy(yael_a, n)) print('float array, pass by reference') numpy_a = np.array(list(range(5)), dtype='float32') print(numpy_a) if '--force-crash' in sys.argv: yael_a = yael.FloatArray.acquirepointer(yael.numpy_to_fvec_ref(numpy_a)) n = numpy_a.size yael.fvec_print(yael_a, n) del numpy_a print('Forced Crash Example!') yael.fvec_print(yael_a, n)