【问题标题】:How can I append an array as column to another array?如何将数组作为列附加到另一个数组?
【发布时间】:2019-05-01 18:35:59
【问题描述】:

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

感谢任何帮助。 谢谢。

【问题讨论】:

  • 您不想要对numpy 数组执行此操作。锯齿状数组是个坏主意。
  • 这是一个练习,所以我别无选择。有什么想法吗?
  • [list(el) for el in zip(array1, array3, array2)]
  • 所需的显示有缺陷。它看起来像一个 3 元素元组,其中元素是包含数字和列表的列表。 array 这个词刚刚被添加。它不是有效的数组构造函数或显示,甚至对于 object dtype 也是如此。

标签: python arrays numpy multidimensional-array


【解决方案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,因为您正在设置具有序列的数组元素。

【讨论】:

    猜你喜欢
    • 2021-10-26
    • 2011-05-22
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多