python - 使用 tile 从二维数组构造 3 维数组
问题描述
我有一个数组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
?
因为作为一个视图,它没有额外的内存开销,因此在运行时几乎是免费的 -
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.]]])
推荐阅读
- html - 我可以更改不同背景中文本部分的颜色吗?
- c# - 需要帮助将 XML 文件反序列化为对象 C#
- php - Laravel 7缺少必需的参数
- java - 通过注释进行的依赖注入不起作用
- javascript - jsPDF v2.1.1 - doc.html 不是函数 - 10.2020
- python - request.referrer 不断返回 None
- java - 将 String.format 调用转换为 String#formatted 的简单方法?
- algorithm - 根据 Big-O 复杂度对函数进行排序
- python - 如何将其他参数传递给 FileSystemEventHandler 类以允许用户输入?
- pointers - 为什么遍历列表是线性时间?