微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建一个充满空列表的新的numpy数组?

如何解决如何创建一个充满空列表的新的numpy数组?

我想生成一个空列表填充的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在这里不起作用?初始化由空列表填充的数组的正确方法是什么?

解决方法

文档中隐藏了无法使用fill_value=[]的原因:

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

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

因此,列表被特殊地视为“数组”填充类型,而不是标量,这不是您想要的。另外,arr.fill([])实际上不是您想要的,因为它将每个元素填充到相同列表中,这意味着将所有元素都追加到一个元素上。为了避免这种情况,您可以按照this answer的状态进行操作,只需使用列表初始化数组即可:

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

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

,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。