如何将一个数组作为列追加到另一个数组?

时间:2019-05-01 18:35:59

标签: python arrays numpy multidimensional-array

我在Python中有这个问题,我无法弄清楚该如何做。我有三个数组:

两种形式:

array1 ([ 1,  2, 3])
array2 ([ 4,  5, 6])

和以下形式之一:

array3 ([ [1, 2, 3], [2, 3, 4], [3, 4, 5]])

我想要的是这两个数组中的一个数组,该数组具有三列,以这种方式,二维数组位于中间:

array  ([1, [1, 2, 3], 4],
        [2, [2, 3, 4], 5],
        [3, [3, 4, 5], 6])

我可以通过使用例如前两个数组np.c_[array1, array2]。 我也可以做np.c_[array1, array3, array2],但后来我得到了

array  ([1, 1, 2, 3, 4],
        [2, 2, 3, 4, 5],
        [3, 3, 4, 5, 6])

感谢您的帮助。 谢谢。

1 个答案:

答案 0 :(得分:1)

这是个坏主意Read up on how numpy stores data,您将了解numpy并不意味着要存储具有混合数据类型的锯齿状数组。

话虽这么说,您所需要的只是将三个输入元素压缩在一起。如果您确实要存储此数据,则可以将其存储为list,这比ndarray

更可取
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])

您可以通过列表理解和zip

来完成此操作
np.array([list(el) for el in zip(a, c, b)], dtype=object)

array([[1, array([1, 2, 3]), 4],
       [2, array([2, 3, 4]), 5],
       [3, array([3, 4, 5]), 6]], dtype=object)

必须指定dtype中的object,因为您要设置具有序列的数组元素。