Создание многомерных нулей Python

112
11

Мне нужно сделать многомерный массив нулей.


Для двух (D = 2) или трех (D = 3) измерений это легко, и я бы использовал:


a = numpy.zeros(shape=(n,n)) 

или


a = numpy.zeros(shape=(n,n,n))

Как для я для более высокого D сделать массив длины n?

спросил(а) 2021-01-19T14:14:02+03:00 9 месяцев назад
1
Решение
157

Вы можете умножить кортеж (n,) на количество необходимых размеров. например:.

>>> import numpy as np
>>> N=2
>>> np.zeros((N,)*1)
array([ 0., 0.])
>>> np.zeros((N,)*2)
array([[ 0., 0.],
[ 0., 0.]])
>>> np.zeros((N,)*3)
array([[[ 0., 0.],
[ 0., 0.]],

[[ 0., 0.],
[ 0., 0.]]])

ответил(а) 2021-01-19T14:14:02+03:00 9 месяцев назад
80

In [4]: import numpy

In [5]: n = 2

In [6]: d = 4

In [7]: a = numpy.zeros(shape=[n]*d)

In [8]: a
Out[8]:
array([[[[ 0., 0.],
[ 0., 0.]],

[[ 0., 0.],
[ 0., 0.]]],

[[[ 0., 0.],
[ 0., 0.]],

[[ 0., 0.],
[ 0., 0.]]]])

ответил(а) 2021-01-19T14:14:02+03:00 9 месяцев назад
79

>>> sh = (10, 10, 10, 10)
>>> z1 = zeros(10000).reshape(*sh)
>>> z1.shape
(10, 10, 10, 10)

EDIT: пока выше не ошибается, это просто чрезмерно. @mgilson ответ лучше.

ответил(а) 2021-01-19T14:14:02+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема