Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用numpy存储不同大小的对象_Python_Arrays_Numpy - Fatal编程技术网

Python 使用numpy存储不同大小的对象

Python 使用numpy存储不同大小的对象,python,arrays,numpy,Python,Arrays,Numpy,我有以下任务: 2份清单。第一个列表->项目,第二个列表->每个项目的元数据(2个浮动) 这些列表通过算法的不同步骤进行更改,但它们的长度保持不变。i、 它们的长度增加了,但也同样增加了。通过这种方式,索引是一种识别元数据所指项目的方法 在算法的一个(重复)步骤中,我缩短了识别相同项目的列表。我必须分别调整元数据列表 我可以使用泛型列表来实现它,但在某些时候它会使内存过载。因此,我尝试使用np.array,但它们的问题是每个元素的维数应该相等。i、 e.arr=np.array([1,2,3,4

我有以下任务:

  • 2份清单。第一个列表->项目,第二个列表->每个项目的元数据(2个浮动)
  • 这些列表通过算法的不同步骤进行更改,但它们的长度保持不变。i、 它们的长度增加了,但也同样增加了。通过这种方式,索引是一种识别元数据所指项目的方法
  • 在算法的一个(重复)步骤中,我缩短了识别相同项目的列表。我必须分别调整元数据列表
  • 我可以使用泛型列表来实现它,但在某些时候它会使内存过载。因此,我尝试使用np.array,但它们的问题是每个元素的维数应该相等。i、 e.
    arr=np.array([1,2,3,4]],dtype=object)
    返回
    arr.ndim=1
    。但我需要的是它返回
    arr.ndim=3
    。我仔细研究了一下,发现
    [3[4]]
    属于
    list
    类型,与
    np.array
    无关。当
    np.array
    的每个元素的维数相等时,它将沿
    np类型的每个轴返回元素,例如
    np.int32
    np.array

    关键的第三步。当我浏览列表并收集相同项目的元数据时,我会将它们放在同一索引下的meta_列表中,即在该索引处创建(或扩展)列表。例如

    meta_list=[[1,2],[3,4],[5,6],[7,8]]
    
    然后,比如说,
    项目列表的第一个和第三个元素是相同的。所以我必须结合他们的元数据。它产生了以下结果:

    meta_list=[[1,2],[[3,4],[7,8]],[5,6]]
    
    但是,我不知道如何使用
    np.array来实现这一步骤,因为
    [[3,4],[7,8]]
    元素的类型是
    list

    非常感谢您的提示。

    带有dtype对象的数组是带有数组包装器的列表。更改数组(任何数据类型)的大小都会生成一个副本。我怀疑数组是否能节省内存。@hpaulj如果我保留一个通用的
    np.array
    ,但用
    np.nan
    虚拟地“拆分”它会怎么样
    1x np.nan='['或']'
    2x np.nan='['或']]'
    。这将是
    元列表
    的一种表示<代码>[np.nan,1,2,np.nan,np.nan,np.nan,3,4,np.nan,np.nan,np.nan,7,8,np.nan,np.nan,np.nan,5,6,np.nan]
    ?这会产生大量的开销。但是,numpy的C实现是否可以弥补这一点呢?我只是不太了解体系结构,所以很难做出清醒的估计。要存储
    nan
    值,数组必须具有浮点数据类型(8字节)。形状为
    (1000,)
    的数组将具有8000字节的数据缓冲区,而不管值是否为1、1.234、nan、1.234e342。谢谢@hpaulj。我的意思是列表中的一个对象在ndarray中需要多少存储空间。所以我可以估计这种方法的优势。你知道估计数吗?