Seb wrote: > Is there an easier way to write a numpy array with a regular structure? > For example, an array with [0, 1] along the diagnal of one of the array > dimensions, and zero elsewhere: > > zz = np.array([[[0, 1], [0, 0], [0, 0]], > [[0, 0], [0, 1], [0, 0]], > [[0, 0], [0, 0], [0, 1]]]) > > This one is not so big, but if it were, there must be a way to code this > properly.
Searching for "numpy assigning diagonal values" gave https://docs.scipy.org/doc/numpy/reference/generated/numpy.fill_diagonal.html as the first hit. So >>> a = numpy.zeros((3,3,2), dtype=int) >>> a array([[[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]], [[0, 0], [0, 0], [0, 0]]]) >>> numpy.fill_diagonal(a[:,:,1], 1) >>> a array([[[0, 1], [0, 0], [0, 0]], [[0, 0], [0, 1], [0, 0]], [[0, 0], [0, 0], [0, 1]]]) -- https://mail.python.org/mailman/listinfo/python-list