[Numpy-discussion] How to fix the diagonal values of a matrix

Keith Goodman kwgoodman at gmail.com
Tue Mar 16 10:43:24 EDT 2010


On Tue, Mar 16, 2010 at 5:56 AM,  <josef.pktd at gmail.com> wrote:
> On Tue, Mar 16, 2010 at 9:43 AM, gerardo.berbeglia <gberbeglia at gmail.com> wrote:
>>
>> How can i take out the diagonal values of a matrix and fix them to zero?
>>
>> Example:
>>
>> input: [[2,3,4],[3,4,5],[4,5,6]]
>>
>> output: [[0,3,4],[3,0,5],[4,5,0]]
>
> assuming a is square
>
> a[range(len(a)),range(len(a))] = 0
>
> see also np.diag
>
> Josef

Or, if you need speed, here's the fast way:

a.flat[::4] = 0

or more generally

a.flat[::a.shape[0]+1] = 0



More information about the NumPy-Discussion mailing list