Python 展开一维numpy阵列并将其复制到三维
我有一个一维数组,需要扩展到三维,原始数组跨Python 展开一维numpy阵列并将其复制到三维,python,numpy,Python,Numpy,我有一个一维数组,需要扩展到三维,原始数组跨axis=0复制 目前,我有如下设置: y = np.tile(x[:, np.newaxis, np.newaxis], (1, 5, 5)) 将numpy导入为np x=np.数组((1,2,3,4,5)) y=np.零((len(x),5,5)) 对于范围(5)中的i: 对于范围(5)内的j: y[:,i,j]=x 打印(y) [[[1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.] [1. 1.
axis=0
复制
目前,我有如下设置:
y = np.tile(x[:, np.newaxis, np.newaxis], (1, 5, 5))
将numpy导入为np
x=np.数组((1,2,3,4,5))
y=np.零((len(x),5,5))
对于范围(5)中的i:
对于范围(5)内的j:
y[:,i,j]=x
打印(y)
[[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
[[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]]
[[3. 3. 3. 3. 3.]
[3. 3. 3. 3. 3.]
[3. 3. 3. 3. 3.]
[3. 3. 3. 3. 3.]
[3. 3. 3. 3. 3.]]
[[4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4.]]
[[5. 5. 5. 5. 5.]
[5. 5. 5. 5. 5.]
[5. 5. 5. 5. 5.]
[5. 5. 5. 5. 5.]
[5. 5. 5. 5. 5.]]]
我觉得应该有一种比嵌套的
for
循环更简单的方法来实现这一点,但是通过粗略搜索显示的任何内容都说明了如何切割长一维数组并使其成为三维数组,而不是将初始维度复制到另外两个维度中。您有两个选择。您可以这样做:
y = np.tile(x[:, np.newaxis, np.newaxis], (1, 5, 5))
这将为您提供一个包含所需内容的新数组。但是,如果不需要写入结果数组,则可以使用创建具有新形状的数组的只读视图,从而节省实际创建更大数组的内存:
y = np.broadcast_to(x[:, np.newaxis, np.newaxis], (5, 5, 5))
请注意,由于这是一个视图,因此在这种情况下,更改
x
中的值将更改y
中的值。您有两个选项。您可以这样做:
y = np.tile(x[:, np.newaxis, np.newaxis], (1, 5, 5))
这将为您提供一个包含所需内容的新数组。但是,如果不需要写入结果数组,则可以使用创建具有新形状的数组的只读视图,从而节省实际创建更大数组的内存:
y = np.broadcast_to(x[:, np.newaxis, np.newaxis], (5, 5, 5))
请注意,由于这是一个视图,在这种情况下,更改x
中的值将更改y
中的值