[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