On Thu, May 20, 2021 at 9:47 AM Neal Becker <ndbecker2@gmail.com> wrote:

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