Construct 3 Dimensions Array From Two Dimensions Array Using Tile
I have an array arr = np.array([0.0, 0.0, 1.0]) I want to contract array of following shape promo_class.shape which is (2,3,3) I want to create repeated array of shape (2,3,3) arra
Solution 1:
Simply use np.broadcast_to
for a 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.]]])
Why should we use view
?
Because being a view, it has no extra memory overhead and hence virtually free on runtime -
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
If you need an output with its own memory space, append with .copy()
.
If you are devoted to 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.]]])
Post a Comment for "Construct 3 Dimensions Array From Two Dimensions Array Using Tile"