Or as a one-liner: out[np.arange(len(x)), x] = 1
If NEP 21 is accepted ( https://numpy.org/neps/nep-0021-advanced-indexing.html) this would be even simpler: out.vindex[:, x] = 1 Was there ever a decision about that NEP? I didn't follow the discussion too closely at the time. On Thu, May 20, 2021 at 10:06 AM Neal Becker <ndbeck...@gmail.com> wrote: > Thanks! > > On Thu, May 20, 2021 at 9:53 AM Robert Kern <robert.k...@gmail.com> wrote: > > > > On Thu, May 20, 2021 at 9:47 AM Neal Becker <ndbeck...@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 > > _______________________________________________ > > NumPy-Discussion mailing list > > NumPy-Discussion@python.org > > https://mail.python.org/mailman/listinfo/numpy-discussion > > > > -- > Those who don't understand recursion are doomed to repeat it > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion