【发布时间】:2020-01-18 01:09:31
【问题描述】:
我需要在我的项目中处理一些大型 numpy 数组。从磁盘加载这样的阵列后,将消耗我计算机一半以上的内存。
加载数组后,我对它做了几个切片(将选择几乎一半的数组),然后我收到错误,告诉我内存不足。
据我所知,通过做一个小实验,我收到了错误,因为当numpy 数组被切片时,将创建一个副本
import numpy as np
tmp = np.linspace(1, 100, 100)
inds = list(range(100))
tmp_slice = tmp[inds]
assert id(tmp) == id(tmp_slice)
返回AssertionError
有没有办法让numpy 数组的一部分只引用原始数组的内存地址,从而不复制数据条目?
【问题讨论】:
-
您的
id测试只是比较了两个不同的python 对象。它不比较它们的元素存储。您可能需要阅读有关基本 numpy 数组布局的更多信息。