将不相等的2D numpy数组合并到3D数组

时间:2020-03-26 04:51:01

标签: python-3.x pandas numpy

两个或多个2D numpy数组如何按行组合。

我有两个numpy数组x和y。

x和y具有不同的形状。两个数组中只有行数= 14相同:

x = np.ones(14).reshape(14,1)

array([[1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.]])

y = np.zeros(42).reshape(14,3)

array([[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.]])

我想从两个或多个2D数组创建3D数组。

所需的结果是:

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

1 个答案:

答案 0 :(得分:0)

您可以使用理解循环 如果您可以接受输出为数组列表,则可以丢弃list()

import numpy as np

x = np.ones([14,1])
y = np.zeros([14,3])

arr1 = [[list(x[i]),list(y[i])] for i in range(14)]

arr1
[[[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]],
 [[1.0], [0.0, 0.0, 0.0]]]