Skip to content

Instantly share code, notes, and snippets.

@santhoshhari
Last active July 4, 2018 05:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save santhoshhari/52d8b7acd39c1b744736d7591497ae39 to your computer and use it in GitHub Desktop.
Save santhoshhari/52d8b7acd39c1b744736d7591497ae39 to your computer and use it in GitHub Desktop.
import numpy as np
class HashTable:
def __init__(self, hash_size, inp_dimensions):
self.hash_size = hash_size
self.inp_dimensions = inp_dimensions
self.hash_table = dict()
self.projections = np.random.randn(self.hash_size, inp_dimensions)
def generate_hash(self, inp_vector):
bools = (np.dot(inp_vector, self.projections.T) > 0).astype('int')
return ''.join(bools.astype('str'))
def __setitem__(self, inp_vec, label):
hash_value = self.generate_hash(inp_vec)
self.hash_table[hash_value] = self.hash_table\
.get(hash_value, list()) + [label]
def __getitem__(self, inp_vec):
hash_value = self.generate_hash(inp_vec)
return self.hash_table.get(hash_value, [])
hash_table = HashTable(hash_size=4, inp_dimensions=20)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment