0

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

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

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

4

1 回答 1

2

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

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

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

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

于 2018-07-05T16:54:26.427 回答