如何解决如何创建一个充满空列表的新的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.full
的fill_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 举报,一经查实,本站将立刻删除。