我有一块内存,其中存储着一个float32
数字的二维数组。
例如,形状为(1000, 10)
,而我在内存中的存储空间类似于带有10000
元素的C数组。
是否可以仅通过指定形状和dtype
将其转换为numpy数组?
答案 0 :(得分:0)
结果numpy
支持将缓冲区解释为一维array
。
import numpy as np
def load_array(data, shape):
return np.frombuffer(data, dtype=np.float32).reshape(shape)
答案 1 :(得分:0)
从磁盘读取内存映射的数组涉及 numpy.memmap()函数。由于该信息未存储在文件中,因此需要再次指定数据类型和形状。
调用包含磁盘中数据的文件: memmapped.dat
将numpy导入为np
array = np.memmap('memmapped.dat',dtype = np.float32,shape =(1000,10))
Ref:https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.memmap.html和https://ipython-books.github.io/48-processing-large-numpy-arrays-with-memory-mapping/