Numpy: преобразовать список в квадратный массив - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть список l с квадратным числом элементов, например, 16, 25, 400. Теперь хочу создать массив numpy a, полный нулей того же размера, но в квадратной форме, например 4x4,5x5, 20x20.

Я нашел решение:

a = np.zeros(2 * (int(np.sqrt(len(l))),))

или

a = np.zeros(len(l)).reshape(int(np.sqrt(len(l))), int(np.sqrt(len(l))))

Это работает, но это очень уродливо, и я уверен, что должно бытьлучший способ сделать это.Что-то вроде a = np.zeros(l, 2).Есть идеи для этого?

Спасибо!:)

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вы можете очистить его следующим образом:

size = len(l)
sqrt = int(np.sqrt(size))
a = np.zeros((sqrt, sqrt))

Каждый раз, когда вы пишете один и тот же фрагмент кода несколько раз, его можно заменить переменной, функцией и т. Д.

0 голосов
/ 22 февраля 2019

Вы можете попробовать:

shp = int(np.sqrt(len(l))
a = np.zeros((shp, shp))
...