我的目标是要有一个4D数组,第4维中的每个“值” k都对应于第k个3D张量。我已经尝试了很多事情,但是总是得到“所有输入数组必须具有相同数量的维数”。
有一个函数返回一个新的但不同的数组(总是相同的大小,例如3000x1000x500),我希望最终输出为3000x1000x500xK * n数组,其中n是逃避while循环。这是我到目前为止的内容:
item_id
预先感谢
答案 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
,只是首先向每个数组添加一个新维度。