import numpy as np # Delete the ith row and jth column from x # returns a copy of x with row,column deleted def numpy_delete_ij(x, i, j): x = np.delete(x, i, axis=0) x = np.delete(x, j, axis=1) return x # returns a view to x with row,column deleted def my_delete1_ij(x, i, j): x[:,j:-1] = x[:,j+1:] x[i:-1,:] = x[i+1:,:] return x[:-1,:-1] # returns a view to x with row,column deleted def my_delete2_ij(x, i, j): Nj,Ni = x.shape if j>Nj/2: # move right half one step left cj = 0 if j < Nj: x[:,j:-1] = x[:,j+1:] else: # move left half one step right cj = 1 if j > 0: x[:,1:j+1] = x[:,:j] if i>Ni/2: ci = 0 # move lower half one step up if i < Ni: x[i:-1,:] = x[i+1:,:] else: # move upper half one step down ci = 1 if i > 0: x[1:i+1,:] = x[:i,:] # pick the correct corner of x and return the view if cj == 0 : if ci == 0: return x[:-1,:-1] # up left else: return x[1:,:-1] # down left else: if ci == 0: return x[:-1,1:] # up right else: return x[1:,1:] # down right