building numpy arrays with regular structure

Peter Otten __peter__ at web.de
Sat Dec 17 03:54:07 EST 2016


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]]])




More information about the Python-list mailing list