Arrays numpy将数据从一个阵列复制到另一个阵列

Arrays numpy将数据从一个阵列复制到另一个阵列,arrays,python-3.x,numpy,Arrays,Python 3.x,Numpy,我有一个问题,我有一个大小为(622,1)的numpy一维数组,我需要将其调整为形状(3,3,3,64)或大小(1728,)的数组。因此,对于这个特定的示例,在将较小的数组复制到较大的数组之后,剩余的1106(1728-622)值应该为零 注意:包含(622,1)的numpy数组中有一些计算值 如果我使用类似- b = np.copy(a) 其中“a”是大小为622的np数组,“b”应该是形状为(3,3,3,64)的np数组。但是,这个np.copy()并不是我想要的 如何将622个非零值复制

我有一个问题,我有一个大小为(622,1)的numpy一维数组,我需要将其调整为形状(3,3,3,64)或大小(1728,)的数组。因此,对于这个特定的示例,在将较小的数组复制到较大的数组之后,剩余的1106(1728-622)值应该为零

注意:包含(622,1)的numpy数组中有一些计算值

如果我使用类似-

b = np.copy(a)
其中“a”是大小为622的np数组,“b”应该是形状为(3,3,3,64)的np数组。但是,这个np.copy()并不是我想要的

如何将622个非零值复制到更大的数组中

我使用的是Python 3.8和numpy 1.18


谢谢

如果有两个数组,则可以使用它们的长度来正确索引,例如:

import numpy as np

a = np.arange(622)
b = np.zeros(1728)

b[:len(a)] = a

然后您可以在此之后重塑
b

您可以创建一个1D零数组
b
,然后将其第一个值指定给
a
,然后重塑为您喜欢的任何形状:

a = np.ones((622, 1))
b = np.zeros((1728,1))
b[:a.shape[0]] = a
b = b.reshape((3,3,3,64))
输出:

[[[[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. 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. 1. ... 1. 1. 1.]]]


 [[[1. 1. 1. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]]

  [[0. 0. 0. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]]

  [[0. 0. 0. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]]]


 [[[0. 0. 0. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]]

  [[0. 0. 0. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]]

  [[0. 0. 0. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]
   [0. 0. 0. ... 0. 0. 0.]]]]

可能的解决办法之一:

# Create the first array (it the target code you have it)
tbl = np.arange(622).reshape(-1, 1)
# Create the second array
tbl2 = np.zeros(1106, dtype='i4').reshape(-1, 1)
# Create the result
res = np.concatenate((tbl, tbl2)).reshape(3, 3, 3, -1)
如果不确定res的形状,请运行:
res.shape
结果应该是:

(3, 3, 3, 64)