Просто используйте np.broadcast_to
для view
-
In [142]: arr = np.array([0.0, 0.0, 1.0])
In [144]: np.broadcast_to(arr,(2,3,3))
Out[144]:
array([[[0., 0., 1.],
[0., 0., 1.],
[0., 0., 1.]],
[[0., 0., 1.],
[0., 0., 1.],
[0., 0., 1.]]])
Почему мы должны использовать view
?
Поскольку он является представлением, он не имеет дополнительной памяти и, следовательно, практически свободен во время выполнения -
In [148]: arr = np.random.rand(300)
In [149]: %timeit np.broadcast_to(arr,(200,300,300))
100000 loops, best of 3: 3.13 µs per loop
Если вам нужен выход с собственным пространством памяти, добавьте .copy()
.
Если вы посвящены np.tile
-
In [174]: np.tile(arr,(2,3,1))
Out[174]:
array([[[0., 0., 1.],
[0., 0., 1.],
[0., 0., 1.]],
[[0., 0., 1.],
[0., 0., 1.],
[0., 0., 1.]]])