gpt4 book ai didi

python - 使用tile从二维数组构造3维数组

转载 作者:行者123 更新时间:2023-12-01 08:04:26 25 4
gpt4 key购买 nike

我有一个数组arr = np.array([0.0, 0.0, 1.0])

我想收缩以下形状的数组promo_class.shape,即(2,3,3)

我想创建形状(2,3,3)的重复数组

array([[[0., 0., 1.],
[0., 0., 1.],
[0., 0., 1.]],
[[0., 0., 1.],
[0., 0., 1.],
[0., 0., 1.]]])

知道如何使用 np.tile 函数来做到这一点吗?

最佳答案

只需使用 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

因为它是一个 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.]]])

关于python - 使用tile从二维数组构造3维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55607273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com