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

AltStyle によって変換されたページ (->オリジナル) /