This seems like something that can be done with indexing, but I
haven't found the solution.
out is a 2D array is initialized to zeros. x is a 1D array whose
values correspond to the columns of out. For each row in out, set
out[row,x[row]] = 1. Here is working code:
def orthogonal_mod (x, nbits):
out = np.zeros ((len(x), 1<<nbits), dtype=complex)
for e in range (len (x)):
out[e,x[e]] = 1
return out
Any idea to do this without an explicit python loop?
i = np.arange(len(x))
j = x[i]
out[i, j] = 1
--
Robert Kern