# [SciPy-user] Easy way to make a block diagonal matrix?

Bruce Southey bsouthey@gmail....
Wed May 20 20:32:34 CDT 2009

```On Wed, May 20, 2009 at 7:23 PM,  <josef.pktd@gmail.com> wrote:
> 2009/5/20 Stéfan van der Walt <stefan@sun.ac.za>:
>> 2009/5/21  <josef.pktd@gmail.com>:
>>> scipy.linalg has some matrix creation functions, some look like
>>
>> Thanks, that looks like a good spot.
>>
>> Please review the attached patch (if anybody does not want it to go
>> in, now is a good time to voice your concerns).
>>
>
> It might be better to preserve the dtype of the input arrays, e.g. I
> could think of a use for integer variables, e.g. dummy variables in
> regression or anova, or to allow an option for the dtype when you
> create the zeros array.
>
> I don't know if anybody would want complex or character matrices.
>
> I just checked, np.kron and np.diag preserves integer type, and
> np.kron converts to float for mixed types, diag preserves character
> type.
>
> otherwise it looks good and useful to me.
>
> Josef
> _______________________________________________
> SciPy-user mailing list
> SciPy-user@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
Hi,
What is the definition that you are using for a block diagonal matrix?

Some definitions use square matrices:
http://en.wikipedia.org/wiki/Block_matrix#Block_diagonal_matrices
http://mathworld.wolfram.com/BlockDiagonalMatrix.html

But Matlab's blkdiag function does not and, thus, it may not result in
a diagonal matrix:
http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/blkdiag.html

So the documentation should reflect the selected definition.

Also, I  support Josef's suggestion  that this function would be
better suited in numpy rather than scipy.

Bruce
```