python - 复制 2D 数组以使其成为 3D

标签 python arrays numpy

假设我有一个二维 Numpy 数组,A .

我想构建一个 3D 数组 B深度为 100 这样对于每个 i这样 0 <= i < 100 , 我们有 B[:,:,i] == A .

在 Python/Numpy 中有什么有效的方法可以做到这一点吗?

最佳答案

只需制作一个你想要的形状的零 3D 数组,然后将你的 A 添加到它

In [13]:

A = np.array([[1,2,3],[4,5,6]])
In [14]:

C = np.zeros(shape=(A.shape[0], A.shape[1], 100), dtype=A.dtype))
In [15]:

B = C+A[...,...,np.newaxis]
In [16]:

B[:,:,1]
Out[16]:
array([[ 1,  2,  3],
       [ 4,  5,  6]])
In [17]:

B[:,:,2]
Out[17]:
array([[ 1,  2,  3],
       [ 4,  5,  6]])

它不会是 A 的 100 个副本,(我怀疑你是否能做到),因为 B 必须是一个连续的内存块自己。

关于python - 复制 2D 数组以使其成为 3D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358315/

相关文章:

python - 增量构建一个 numpy 数组并测量内存使用情况

python - Django - syncdb 不创建表

ios - 显示组合数组中的文本标签(使用 API)

javascript - 合并具有相同键值对的对象数组中的值

arrays - 提高在结构 slice 中搜索值的性能

python - Pandas 系列到 Numpy ndarray

python - 为 Lambda *编译* Python3 是一个好习惯吗?

python - 在适当的时候退出 itertool.product 循环

python - python 是否对多段导入做了额外的事情?

python - 如何将数据框中的列与空列之间的值进行匹配