将3D阵列添加到4D阵列

时间:2018-07-31 23:49:49

标签: python arrays numpy multidimensional-array tensor

我的目标是要有一个4D数组,第4维中的每个“值” k都对应于第k个3D张量。我已经尝试了很多事情,但是总是得到“所有输入数组必须具有相同数量的维数”。

有一个函数返回一个新的但不同的数组(总是相同的大小,例如3000x1000x500),我希望最终输出为3000x1000x500xK * n数组,其中n是逃避while循环。这是我到目前为止的内容:

item_id

预先感谢

1 个答案:

答案 0 :(得分:0)

收集列表中的数组:

In [54]: tensors = []
In [55]: for i in range(3):
    ...:     arr = np.ones((2,4))*i
    ...:     tensors.append(arr)
    ...: tensors

Out[55]: 
[array([[0., 0., 0., 0.],
        [0., 0., 0., 0.]]), array([[1., 1., 1., 1.],
        [1., 1., 1., 1.]]), array([[2., 2., 2., 2.],
        [2., 2., 2., 2.]])]

如果我按照您的描述正确进行操作,您想将数组连接到新的最终轴上

In [56]: np.stack(tensors, axis=2)
Out[56]: 
array([[[0., 1., 2.],
        [0., 1., 2.],
        [0., 1., 2.],
        [0., 1., 2.]],

       [[0., 1., 2.],
        [0., 1., 2.],
        [0., 1., 2.],
        [0., 1., 2.]]])
In [57]: _.shape
Out[57]: (2, 4, 3)
轴= 0的

np.stack的行为与np.array相同,将它们连接到新的初始轴上。 np.concatenate可用于在现有轴上联接。 ({stack使用concatenate,只是首先向每个数组添加一个新维度。