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

问题描述 投票:0回答:1

我在Python中有这个问题,我无法弄清楚我是如何做到这一点的。我有三个数组:

两种形式:

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

以及其中一种形式:

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

我想要的是来自这两个数组的数组,它有三列,就这样,2D数组位于中心:

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])

任何帮助表示赞赏。谢谢。

python arrays numpy multidimensional-array
1个回答
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)

您必须指定dtypeobject,因为您要使用序列设置数组元素。

© www.soinside.com 2019 - 2024. All rights reserved.