![](https://secure.gravatar.com/avatar/f9edf141570be78631565a8c8883bde5.jpg?s=120&d=mm&r=g)
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 <ndbecker2@gmail.com> wrote:
Thanks!
On Thu, May 20, 2021 at 9:53 AM Robert Kern <robert.kern@gmail.com> wrote:
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 _______________________________________________ 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