【问题标题】:Insert numpy array to an empty numpy array将 numpy 数组插入一个空的 numpy 数组
【发布时间】:2015-08-24 22:39:48
【问题描述】:

我正在尝试创建一个空的 numpy 数组,然后将新创建的数组插入多个数组。对我来说重要的是不要塑造第一个 numpy 数组,它必须是空的,然后我可以将具有不同大小的新 numpy 数组添加到该数组中。类似于以下内容:

A = numpy.array([])
B = numpy.array([1,2,3])
C = numpy.array([5,6])
A.append(B, axis=0)
A.append(C, axis=0)

我希望 A 看起来像这样:

[[1,2,3],[5,6]]

当我执行附加命令时,我收到以下错误:

AttributeError: 'numpy.ndarray' object has no attribute 'append'

知道如何做到这一点吗?

PS:这与之前提出的问题不同,因为我不想连接两个 numpy 数组。我正在尝试将一个 numpy 数组插入另一个空的 numpy 数组。我知道如何使用列表来做到这一点,但它必须是 numpy 数组。

谢谢

【问题讨论】:

  • 您确定要创建这样的numpy.array 吗?当每一行有不同的列数时,您将拥有object 类型的numpy.array,它失去了大部分不错的numpy 功能。对于喜欢的东西,可以考虑使用普通 python list
  • Akavail 是对的。我假设你想要一个 python 列表作为输出。如果你想要一个 numpy 数组,它是一个参差不齐的数组,你必须填充一些东西,例如np.nan: 数组([[1,2,3],[5,6,nan]])
  • @mbomb007 这不是重复的,我解释了原因。谢谢
  • Nimafl,您还没有回答 Akavail 的问题,这很重要:对象数组就足够了吗?还是您想要一个带有空占位符(如 -1 或 nan)的参差不齐的数组?

标签: python arrays numpy append


【解决方案1】:

你不能用 numpy 数组做到这一点,因为真正的 2D numpy 是矩形的。例如,np.arange(6).reshape(2,3) 返回array([[0, 1, 2],[3, 4, 5]])。 如果您真的想这样做,请尝试 array([array([1,2,3]),array([5,6])]) 创建 array([array([1, 2, 3]), array([5, 6])], dtype=object) 但您将失去所有未对齐数据的 numpy 功能。

【讨论】:

    【解决方案2】:

    取自here。也许先搜索现有问题。

    numpy.append(M, a)
    

    【讨论】:

    • 这些不起作用。 concatenate 给出 array([1.,2.,3.]) 并且 vstack 由于大小不等而引发错误。
    • @rjonnal 然后查看链接问题中的下一个答案。这个问题是重复的。
    • mbomb007,它不是重复的。查看 OP 所需的输出。
    • M 来自哪里?
    【解决方案3】:

    您可以通过将数组转换为列表来做到这一点:

    In [21]: a = list(A)
    In [22]: a.append(list(B))
    In [24]: a.append(list(C))
    In [25]: a
    Out[25]: [[1, 2, 3], [5, 6]]
    

    我的直觉是,有一个比这更好的解决方案(更 Python 或更 numpythonic),这可以从更完整的问题描述中收集到。

    【讨论】:

    • 不,我不想使用列表。它必须是一个 numpy 数组,但谢谢。
    • 看来我必须以某种方式处理使用列表,但无论如何感谢您的努力。
    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 2012-04-04
    • 2021-07-14
    相关资源
    最近更新 更多