【问题标题】:How to create a new numpy array filled with empty lists?如何创建一个充满空列表的新 numpy 数组?
【发布时间】:2021-02-02 03:48:21
【问题描述】:

我想生成一个 numpy 数组填充的空列表。我试过这个:

import numpy as np

arr=np.full(6, fill_value=[], dtype=object)

我得到了一个错误:

ValueError: could not broadcast input array from shape (0) into shape (6)

但如果我使用:

arr = np.empty(6, dtype=object)
arr.fill([])

没关系。为什么numpy.full 在这里不起作用?初始化填充空列表的数组的正确方法是什么?

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    你可以尝试使用 numpy.empty(shape, dtype=float, order='C')

    【讨论】:

    • 这不是我要问的。我的问题是用一个空列表填充数组中的每个元素。
    【解决方案2】:

    您不能使用fill_value=[] 的原因隐藏在文档中:

    在文档中,它说np.fullfill_value 参数是标量或类数组。在np.asarray 的文档中,您可以找到他们对类数组的定义:

    输入数据,可以转换为数组的任何形式。这包括列表、元组列表、元组、元组的元组、列表的元组和 ndarray。

    因此,列表被特别视为“数组”填充类型而不是标量,这不是您想要的。此外,arr.fill([]) 实际上不是您想要的,因为它将每个元素填充到 same 列表中,这意味着附加到一个附加到所有元素。为了避免这种情况,您可以这样做 this answer 状态,并使用列表初始化数组:

    arr = np.empty(6, dtype=object)
    arr[...] = [[] for _ in range(arr.shape[0])]
    

    这将创建一个包含 6 个唯一列表的数组,这样追加到一个列表时不会追加到所有列表中。

    【讨论】:

      猜你喜欢
      • 2016-03-03
      • 1970-01-01
      • 2021-11-22
      • 2017-12-30
      • 2017-09-18
      • 2013-12-12
      • 2014-09-03
      • 2018-05-18
      相关资源
      最近更新 更多