Arrays numpy将数据从一个阵列复制到另一个阵列
我有一个问题,我有一个大小为(622,1)的numpy一维数组,我需要将其调整为形状(3,3,3,64)或大小(1728,)的数组。因此,对于这个特定的示例,在将较小的数组复制到较大的数组之后,剩余的1106(1728-622)值应该为零 注意:包含(622,1)的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个非零值复制
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)