From 68a5e7fd8006f488f22f44f475d30e79ad0804b2 Mon Sep 17 00:00:00 2001 From: Bas van Beek Date: Sun, 21 Feb 2021 16:11:52 +0100 Subject: [PATCH] BUG: Fixed an issue where `diagflat` could overflow on windows and 32-bit platforms --- numpy/lib/twodim_base.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/numpy/lib/twodim_base.py b/numpy/lib/twodim_base.py index 960797b68a64..afd50b9c6881 100644 --- a/numpy/lib/twodim_base.py +++ b/numpy/lib/twodim_base.py @@ -5,8 +5,8 @@ from numpy.core.numeric import ( asanyarray, arange, zeros, greater_equal, multiply, ones, - asarray, where, int8, int16, int32, int64, empty, promote_types, diagonal, - nonzero, indices + asarray, where, int8, int16, int32, int64, intp, empty, promote_types, + diagonal, nonzero, indices ) from numpy.core.overrides import set_array_function_like_doc, set_module from numpy.core import overrides @@ -348,10 +348,10 @@ def diagflat(v, k=0): n = s + abs(k) res = zeros((n, n), v.dtype) if (k >= 0): - i = arange(0, n-k) + i = arange(0, n-k, dtype=intp) fi = i+k+i*n else: - i = arange(0, n+k) + i = arange(0, n+k, dtype=intp) fi = i+(i-k)*n res.flat[fi] = v if not wrap: