Skip to content

Instantly share code, notes, and snippets.

@afonari
Forked from iizukak/gram_schmidt.py
Created October 17, 2017 18:36
Show Gist options
  • Save afonari/bb4fcf230192c90fdeeab353e20ee9ba to your computer and use it in GitHub Desktop.
Save afonari/bb4fcf230192c90fdeeab353e20ee9ba to your computer and use it in GitHub Desktop.
Gram-Schmidt Orthogonization using Numpy
import numpy as np
def gs_cofficient(v1, v2):
return np.dot(v2, v1) / np.dot(v1, v1)
def multiply(cofficient, v):
return map((lambda x : x * cofficient), v)
def proj(v1, v2):
return multiply(gs_cofficient(v1, v2) , v1)
def gs(X):
Y = []
for i in range(len(X)):
temp_vec = X[i]
for inY in Y :
proj_vec = proj(inY, X[i])
temp_vec = map(lambda x, y : x - y, temp_vec, proj_vec)
Y.append(temp_vec)
return Y
#Test data
test = np.array([[3.0, 1.0], [2.0, 2.0]])
test2 = np.array([[1.0, 1.0, 0.0], [1.0, 3.0, 1.0], [2.0, -1.0, 1.0]])
print np.array(gs(test))
print np.array(gs(test2))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment