【问题标题】:Confine dimension of an existing memmap (NumPy)限制现有 memmap 的维度 (NumPy)
【发布时间】:2018-07-05 16:30:11
【问题描述】:

我有一个 .dat 文件,其中包含使用 numpy.memmap 生成的大型 (600000,6,8000) 浮点数组。

第三个轴代表一个日期范围。在运行时,用户指定更窄的日期范围。结果是我最终在执行过程中沿第三维array[i, :, user_start:user_end] 切片数百万次。

我知道可以将 memmap 偏移一个固定数字,但是有没有办法在运行开始时限制数组的维度,这样我就不需要每次都对第三个轴进行切片?

【问题讨论】:

    标签: python numpy numpy-memmap


    【解决方案1】:

    内存映射数组的一个切片创建另一个具有相同底层文件的内存映射数组,因此您可以创建一个新数组,该数组是用户输入定义的切片,并从那时起使用新数组。

    如果a是内存映射数组,定义

    b = a[:, :, user_start:user_end]
    

    然后使用b 而不是重复制作a 的同一片。也就是说,不要使用a[i, :, user_start:user_end],而是使用b[i, :, :](或b[i, :],甚至只是b[i],因为numpy 索引中的最终: 是可选的)。

    【讨论】:

    • 这在语法上有效,但似乎导致了内存泄漏。
    猜你喜欢
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多